【问题标题】:Special Characters ÆØÅ not received correct with curl特殊字符 ÆØÅ 未收到正确的 curl
【发布时间】:2017-05-16 08:43:27
【问题描述】:

我使用 REST API 从 curl 发送到服务,但我不明白为什么服务器没有正确接收特殊字符 ÆØÅ。

当我在 CMD 中从 curl 执行此操作时,服务器接收到的丹麦字符 ÆØÅ 不正确。

当我使用浏览器时,通过 StrongLoop API,字符被正确插入。

据我所知,我需要定义字符集。但这没有任何效果。使用 chcp 65001 和 Lucida Console 字体没有帮助。我有点迷失了识别问题。

这是使用的命令:

curl -X POST -H "Content-Type: application/json; charset=UTF-8" -H "Accept: application/json" -d "{  \"metadata\": {    \"user\": \"aa\",    \"version\": \"ED\",    \"transaction_date\": \"2016-12-30\",    \"context_info\": \"string\"  },  \"container\": {    \"type\": \"SC\",    \"type_source\": \"string\",    \"op_status_source\": \"string\",    \"identification\": \"øæå\",  \"id_source\": \"876332d2321\",    \"ver\": 0  }}" "http://xx.com/xx/containers?access_token=xxx

回复:

{"type":"SC","type_source":"string","op_status_source":"string","identification":"���","id_source":"8763wwd32d2321","ver":1}

æøå 将是 ∩┐╜∩┐╜∩┐╜"、���� 或类似的,具体取决于 chcp。

另外请注意,控制台会正确显示æøå,但不会显示响应。

【问题讨论】:

  • 不知道是否可以尝试使用--data-binary 而不是-d? (尽管选项名称中有“二进制”,但它不(仅)用于二进制数据;它只是确保数据按原样发送。)
  • CMD的字符集是什么? thatcurl 的参数的字符集,即数据,因此这是要指定的字符集。如果您使用文件而不是命令行参数来提供数据,那么您可以控制文件的编码并将其设为 UTF-8。要查看CMD 代码页,请运行命令mode,例如我说Code page: 437
  • 要将 CMD 更改为 UTF-8,请参阅 Unicode characters in Windows command line - how? 实际上,因为这确实是您的答案,所以我会投票结束您的问题,因为它是重复的。 --- Godt nytår ;-)
  • 如果我使用 --data-binary 它仍然是一样的。我还尝试将代码页更改为 65001 并将字体设置为 Lucida Console,这似乎没有任何变化。
  • 尝试用 ^ 转义它们,所以它看起来像 \"^ø^æ^å\" - 然后意识到微软不知道如何编写终端,你不应该使用 cmd.exe ,然后安装一个像样的终端,比如 Cygwin Bash (cygwin.com)

标签: json curl strongloop


【解决方案1】:

我设法通过将带有丹麦语字符的 json 放在它自己的文件 test.json 中来实现这一点。我确保 - 这是他们的关键 - json 文件被保存为 utf-8:我通过使用记事本打开文件并使用“另存为”来做到这一点,选择 utf-8 编码作为文件编码。

在包含 curl 命令的 bat 文件的顶部,我输入了 chcp 65001。

curl.exe -X PUT --header "Content-Type: application/json; charset=UTF-8" --header "Accept: application/json"  -s -d @test.json "<theUrl>"

我添加了 -s 以使 curl 对我遇到的错误(写入正文失败)保持安静,尽管命令(更新数据库中的记录)似乎运行成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多