2013-03-26 58 views
0

我访问Yummly数据库使用HTML查询在我的Android应用程序的食谱:Yummly API的JSON响应返回奇怪的字符(安卓)

http://api.yummly.com/v1/api/recipes?_app_id=MY-APP-ID_app_key=MY-APP-KEY&q=KEYWORD 

即使他们的文档指出GET请求在返回UTF-8格式,我在代码中找到一些奇怪的字符,如:Pots de Creme a l’Orange

该问题不仅限于我的Android应用程序,但Chrome浏览器中也显示了相同的问题。有趣的是,当我尝试在Internet Explorer中打开它时,它似乎是正确的:Pots de Creme a l’Orange,但还有其他一些内容,如crème fraĂ®che,它在Chrome中有时显示为Crème Fraîche,有时正确为Crème Fraîche

使浏览器以不同方式解释响应的浏览器有什么区别? 而且,更重要的是,在Android/Java中可以做些什么来消除这个问题?你有什么想法?

在Android中,我使用HttpGet从服务器获取数据,然后将其传递给JSONObject。

+0

你确定字符串变量存储的响应也是UTF-8编码? – 2013-03-26 18:06:28

+0

我没有真正确切地说过,但是我遵循了StackOverflow的一个建议,并且把'BufferedReader reader = new BufferedReader(new InputStreamReader(content,“UTF-8”));''。另一方面,这个问题也存在于Web浏览器中,所以我不认为Java代码可以做任何事情,因为我可能早些时候存在这个问题。 – 2013-03-26 18:16:16

回答

0

我为Yummly工作。我们处理这些事情的方式不一致,但现在应该修复。

作为解释,&;语法是用于转义某些字符的SGML/XML/HTML实体。例如,请参阅here。对于大多数浏览器的用户,无论文档是否包含&或& amp;没有区别,所以我们没有足够的正常化它们。但对于像你这样的应用程序,显然它确实有所作为,我们已经添加了更加彻底的标准化。没有任何HTML实体,您从API获得的所有内容都不应该是UTF8。

仅供参考,Apache Commons Lang有这种类型的事情一个方便的Java实用程序

+0

谢谢,问题似乎解决了,现在在我的应用程序中一切看起来不错:) – 2013-03-28 17:59:04