我是从curl发送到使用REST API的服务,我不明白为什么服务器没有收到特殊字符ÆØÅ正确。
当我在CMD中从curl执行此操作时,服务器正在接收丹麦字符ÆØÅ不正确。
当我使用浏览器时,通过StrongLoop API,正确插入了字符。
据我所知,我需要定义charset。但这没有效果。使用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。
另请注意,控制台将正确显示æøå,但不会显示响应。
答案 0 :(得分:0)
我设法通过将带有丹麦字符的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对我遇到的错误(写入正文失败)保持安静,尽管命令(更新数据库中的记录)似乎成功运行。