有谁知道我们应该如何调用 REST API 来存储特殊字符?我尝试了以下方法:
- 完全没有特殊处理。我注意到 Parse 可以处理特殊字符,例如 #@$ 等,所以我想我会试一试。这最终没有运气。示例 curl 查询是:
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":"The object contains an invalid utf8 string"}" 这是预期的结果。
- 然后我想我会在帖子调用中添加字符集标题,即
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
这将返回与第一次尝试相同的结果。
- 好的,然后我尝试将其手动编码为UTF-8,即
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 而不是 é。我尝试在标题中取出字符集值,这似乎也无济于事。
- 我注意到通过数据浏览器一切正常。所以我监视 js 查询以查看 db 发送的内容。原来浏览器正在为 é 发送 é。然后我继续改变我的卷曲,tada,我明白了,即
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
终于给了我我想要的东西,价值é。
现在我很疑惑,到底是什么编码能把é转成é?我还需要处理各种其他特殊的外来字符,我需要找到一种方法将它们可靠地编码为预期的格式......
提前致谢!