有谁知道我们应该如何调用REST API来存储特殊字符?我尝试了以下方法:
curl -X POST \
-H "X-Parse-Application-Id: appId" \
-H "X-Parse-REST-API-Key: apikey" \
-H "Content-Type: application/json;" \
-d '{"testString":"é"}' \
https://api.parse.com/1/classes/TestObject
这将返回“{”code“:107,”error“:”该对象包含无效的utf8字符串“}”,这是预期的。
curl -X POST \
-H "X-Parse-Application-Id: appId" \
-H "X-Parse-REST-API-Key: apikey" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"testString":"é"}' \
https://api.parse.com/1/classes/TestObject
这会返回与第一次尝试相同的结果。
curl -X POST \
-H "X-Parse-Application-Id: appId" \
-H "X-Parse-REST-API-Key: apikey" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"testString":"%C3%A9"}' \
https://api.parse.com/1/classes/TestObject
现在这确实创建了行,但是,该值实际上是%C3%A9而不是é。我尝试在标题中取出charset值,这似乎没有任何帮助。
curl -X POST \
-H "X-Parse-Application-Id: appId" \
-H "X-Parse-REST-API-Key: apikey" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"testString":"é"}' \
https://api.parse.com/1/classes/TestObject
最后给了我想要的价值é。
现在我很困惑,什么样的编码将é转换成é?我得到了各种其他需要处理的特殊外来字符,我需要找到一种方法将它们可靠地编码成预期的格式......
提前致谢!
答案 0 :(得分:1)
我刚在OSX上的终端上试过这个,没有问题:
curl -X POST \
-H "X-Parse-Application-Id: appID" \
-H "X-Parse-REST-API-Key: restKey" \
-H "Content-Type: application/json;" \
-d '{"testString":"é"}' \
https://api.parse.com/1/classes/TestObject
终端中的字符编码设置为UTF-8。但是,当更改为ISO-8859-1时,我得到了与您相同的错误:
{"code":107,"error":"invalid utf-8 string was provided"}
所以@ahoffer可能是你没有将utf-8设置为终端的字符编码。