0

我使用 html 查询在我的 Android 应用程序中访问 Yummly 数据库以获取食谱:

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。

4

1 回答 1

0

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

作为解释,&; 语法是用于转义某些字符的 SGML/XML/HTML 实体。例如,请参见此处。对于大多数浏览器的用户来说,文档是否包含 & 或 & 没有区别,所以我们在规范化它们方面不够彻底。但对于像您这样的应用程序,显然它确实有所作为,我们添加了更彻底的规范化。您从 API 获得的所有内容都不应该是没有任何 HTML 实体的 UTF8。

仅供参考,Apache Commons Lang为这类事情提供了一个方便的 Java 实用程序

于 2013-03-28T17:54:50.887 回答