CURL不编码UTF-8

And*_*iro 5 jquery encoding curl cmd utf-8

我正在使用Windows 10curl 7.52.1。当我尝试将POST数据发送到WEBSERVICE时,curl未将字符编码为UTF-8(我需要显示pt-BR字符,例如àáçÇãõ等)

是的,我已经检查过,没有成功。

如果我将编码页面设置为chcp 65001,错误仍然存​​在。改变以chcp 1252部分解决问题。

看,如果我echo Administração >> test.txt没有任何chcp更改地提示,我会得到一个Administra‡Æo

更改后,chcp 65001我得到Administração

更改后,chcp 1252我终于得到Administração

但是使用curl,什么都不会改变。

我试过设置标头content-type,很不幸:

curl -X POST -h "Content-Type: text/plain; charset=UTF-8" --data-ascii "name=Administração" http//:localhost:8084/ws/departments
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

{"holder":{"entities":[{"name":"Administra��o","dateReg":"Dec 29, 2016 2:05:33 PM"}],"sm":{}},"message":{"text":""},"status":-1}

我还检查了WS,当我运行时,它正在接受字符编码JQuery

$.ajax({
     url:"http://localhost:8084/ws/departments",
     type:"POST",
     data: {name: "Administração"},
     success: function(data, textStatus, xhr){
       console.log(data);
     }
});
Run Code Online (Sandbox Code Playgroud)

我得到预期的输出:

{"holder":{"entities":[{"name":"Administração","dateReg":"Dec 29, 2016 2:03:17 PM"}],"sm":{}},"message":{"text":""},"status":-1}

我不知道我还能尝试解决什么。拜托,你们能帮我吗?

提前致谢。

更新

正如@Dekel所建议的那样,我还尝试使用外部文件作为数据bynary(内部内容test.txtname =Administração):

curl -i -X POST -H "Content-Type: text/plain; charset=UTF-8" --data-binary "@test.txt" http://localhost:8084/ws/departments
Run Code Online (Sandbox Code Playgroud)

我仍然得到以下异常输出:

**{"holder":{"entities":[{"name":"Administra��o","dateReg":"Dec 29, 2016 2:41:27 PM"}],"sm":{}},"message":{"text":""},"status":-1}**
Run Code Online (Sandbox Code Playgroud)

更新2

建议使用@Phylogenesis charset=ISO-8859-1。我注意到,即使返回Administração作为结果,在服务器端进行狭窄检查,在这种情况下,WS仍接收到确切的字母ç

And*_*iro 6

经过与@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

第二种方法是对包含要发布的所有内容的文件进行编码。我使用了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