CURL不编码UTF-8

时间:2016-12-29 16:12:57

标签: jquery curl encoding utf-8 cmd

我正在使用 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

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