使用Curl - 字符编码问题向Web Api发出POST请求

时间:2013-11-24 12:05:32

标签: curl unicode character-encoding asp.net-web-api fiddler

我们有一个接受POST请求的WebApi服务。 POST请求中的信息具有此unicode字符 - ¡(http://www.fileformat.info/info/unicode/char/a1/index.htm

当我们使用Fiddler测试服务时,在服务器上正确接收信息。但是在使用curl对相同信息进行POST时,角色会从特殊区块更改为此角色 - http://www.fileformat.info/info/unicode/char/fffd/index.htm

对于为什么会发生这种情况以及如何让Curl请求POST正确编码的东西的任何想法将不胜感激

编辑: 卷曲请求

curl --trace-ascii debug.txt -d "=VALT ¡ OFFER = '111501383'" http://localhost:25980/api/uni

Api控制器代码

// POST api/<controller>
public string Post([FromBody]string value)
{
// code to process the value
}

Fiddler请求(使用作曲家标签)

POST http://localhost:25980/api/uni HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-IN,en;q=0.5
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Content-Type: application/x-www-form-urlencoded; charset=US-ASCII
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Length: 47
Host: localhost:25980

"=VALT ¡ OFFER = '111501383'"

1 个答案:

答案 0 :(得分:3)

这是一个建议。我会在今天晚些时候尝试复制你的问题,并会更新答案。

  

Content-Type:application / x-www-form-urlencoded;字符集= US-ASCII

此行指定使用US-ACSII编码方案对数据进行编码,该方案不包含¡个字符。尝试使用此选项将其设置为UTF-8

-H "Content-Type: application/x-www-form-urlencoded; charset=utf-8"