如何使用REST API在parse.com中保存特殊字符

时间:2013-08-03 07:19:35

标签: parse-platform

有谁知道我们应该如何调用REST API来存储特殊字符?我尝试了以下方法:

  • 根本没有特别处理。我注意到Parse可以处理#@ $等特殊字符,所以我想我会给它一个镜头。这最终没有运气。示例卷曲查询是:

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字符串“}”,这是预期的。

  • 然后我想我会在post post中添加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

这会返回与第一次尝试相同的结果。

  • 好的,然后我尝试手动将其编码为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而不是é。我尝试在标题中取出charset值,这似乎没有任何帮助。

  • 我注意到一切都通过数据浏览器完美无缺。所以我监视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

最后给了我想要的价值é。

现在我很困惑,什么样的编码将é转换成é?我得到了各种其他需要处理的特殊外来字符,我需要找到一种方法将它们可靠地编码成预期的格式......

提前致谢!

1 个答案:

答案 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

enter image description here

终端中的字符编码设置为UTF-8。但是,当更改为ISO-8859-1时,我得到了与您相同的错误:

{"code":107,"error":"invalid utf-8 string was provided"}

所以@ahoffer可能是你没有将utf-8设置为终端的字符编码。