我正在使用 Windows 10 和 curl 7.52.1 。
当我尝试将POST
数据发送到WEBSERVICE时, curl 不会将字符编码为UTF-8
(我需要显示 pt-BR 字符,如àáçÇãõ等)
是的,我已经检查了this,但没有成功。
如果我将编码页面设置为chcp 65001
,则错误仍然存在。
更改为chcp 1252
部分解决了问题。
看,如果我在没有echo Administração >> test.txt
更改的情况下提示chcp
,我会得到管理员‡ÆÆ。
更改为chcp 65001
后,我Administração 。
更改为chcp 1252
后,我终于Administração。
但是使用curl,
没有任何改变。
我已尝试设置标题内容类型,没有幸运:
curl -X POST -h "Content-Type: text/plain; charset=UTF-8" --data-ascii "name=Administração" http//:localhost:8084/ws/departments
我得到以下输出:
{"holder":{"entities":[{"name":"Administra��o","dateReg":"Dec 29, 2016 2:05:33 PM"}],"sm":{}},"message":{"text":""},"status":-1}
当我运行时(JQuery
),我还检查了 WS 它接受字符编码:
$.ajax({
url:"http://localhost:8084/ws/departments",
type:"POST",
data: {name: "Administração"},
success: function(data, textStatus, xhr){
console.log(data);
}
});
我得到了预期的输出:
{"holder":{"entities":[{"name":"Administração","dateReg":"Dec 29, 2016 2:03:17 PM"}],"sm":{}},"message":{"text":""},"status":-1}
我不知道还能尝试解决这个问题。 拜托,你能帮助我吗?
提前致谢。
更新
根据@Dekel的建议,我还尝试使用外部文件作为数据({1}}内的内容 name =Administração):
test.txt
我仍然得到这个不寻常的输出:
curl -i -X POST -H "Content-Type: text/plain; charset=UTF-8" --data-binary "@test.txt" http://localhost:8084/ws/departments
更新2
@Phylogenesis建议使用**{"holder":{"entities":[{"name":"Administra��o","dateReg":"Dec 29, 2016 2:41:27 PM"}],"sm":{}},"message":{"text":""},"status":-1}**
。我注意到,即使返回Administração结果,在服务器端进行狭窄检查,WS也会收到确切的字母,在本例中为charset=ISO-8859-1
。
答案 0 :(得分:5)
在与@Dekel讨论后,来自@Phylogenesis的建议我可以部分解决问题,但有效。有两种方式:
charset=ISO-8859-1
服务器可以使用charset=ISO-8859-1
接收正确的字母。甚至来自服务器的响应数据也显示不正确。
我使用:curl -i -X POST -H "Content-Type: text/plain; charset=ISO-8859-1" --data-ascii "name=Administração" http://localhost:8084/ws/departments
第二种方法是编码包含要POST的所有内容的文件。我用 Notepad ++>格式>转换为UTF-8(无BOM)。
然后,提示:curl -i -X POST -H "Content-Type: text/plain; charset=UTF-8" --data-binary "@test.txt" http://localhost:8084/ws/departments
。