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

Parse platform 如何使用REST API在parse.com中保存特殊字符,parse-platform,Parse Platform,有人知道我们应该如何调用RESTAPI来存储特殊字符吗?我尝试过以下方法: 没有任何特殊处理。我注意到Parse可以处理诸如#@等特殊字符,所以我想我会尝试一下。结果是没有运气。示例curl查询是: curl-X POST\ -H“X-Parse-Application-Id:appId”\ -H“X-Parse-REST-API-Key:apikey”\ -H“内容类型:应用程序/json\ -d'{“testString”:“é”}\ https://api.parse.com/1/cl

有人知道我们应该如何调用RESTAPI来存储特殊字符吗?我尝试过以下方法:

  • 没有任何特殊处理。我注意到Parse可以处理诸如#@等特殊字符,所以我想我会尝试一下。结果是没有运气。示例curl查询是:
curl-X POST\
-H“X-Parse-Application-Id:appId”\
-H“X-Parse-REST-API-Key:apikey”\
-H“内容类型:应用程序/json\
-d'{“testString”:“é”}\
https://api.parse.com/1/classes/TestObject

这将返回“{”code“:107,“error”:“对象包含无效的utf8字符串”}”,这是预期的结果

  • 然后我想在post调用中添加字符集头,即
curl-X POST\
-H“X-Parse-Application-Id:appId”\
-H“X-Parse-REST-API-Key:apikey”\
-H“内容类型:应用程序/json;字符集=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“内容类型:应用程序/json;字符集=utf-8”\
-d'{“testString”:“%C3%A9”}\
https://api.parse.com/1/classes/TestObject

现在这确实创建了行,但是,值实际上是%C3%A9,而不是é。我试着去掉标题中的字符集值,这似乎也没有帮助

  • 我注意到,通过数据浏览器,一切工作都很完美。因此,我监视js查询以查看db发送了什么。原来浏览器正在发送©foré。然后我开始换卷发,塔达,我知道了,也就是说
curl-X POST\
-H“X-Parse-Application-Id:appId”\
-H“X-Parse-REST-API-Key:apikey”\
-H“内容类型:应用程序/json;字符集=utf-8”\
-d'{“testString”:“Ã”}\
https://api.parse.com/1/classes/TestObject

终于给了我我想要的东西,那就是价值

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


提前谢谢

我刚刚在OSX上的终端上尝试了这个,没有出现问题:


curl-X柱\
-H“X-Parse-Application-Id:appID”\
-H“X-Parse-REST-API-Key:restKey”\
-H“内容类型:应用程序/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设置为终端的字符编码。

我的下一个问题是,我应该使用什么样的编码库来将é编码到Ã中……我对它的理解不够透彻,无法为您提供解决方案,但要了解问题的描述,查看此条目:此网页中的U+00E9éé%C3%A9:查看此问题和答案:。我猜您的终端的字符编码是ISO-8859-1、Windows-1252,Parse.com需要UTF8。