1

我刚刚启动了一个我一直在研究的小应用程序。没什么大不了的,但我想让它正常工作。它位于www.wedrapp.com

大多数时候它工作得很好。输入一个城市,返回XML,解析,返回的数据显示给用户。

然而不幸的是,当搜索某些城市(例如马赛)时会返回错误。如果你搜索马赛,你会明白我的意思。我感觉这与特殊字符有关,因为 Marseille 搜索实际上在 XML 中返回 Marseilles, Provence-Alpes-Côte d'Azur。同样,Paris 给出了一个错误,因为它实际上返回了 Paris, Île-de-France。

谁能阐明如何去除这些奇怪的字符,或者至少阻止它们在点击屏幕之前提供错误?它是用 PHP 解析的 XML。

4

1 回答 1

3

找出 google 返回的 XML 的编码方式。然后将其从该编码重新编码为 UTF-8,然后您可以使用SimpleXML.

Google Weather API XML 具有基于在请求时指定的语言的编码(也可以指定您想要的编码,我很快就会谈到)。

例如,它可以ISO-8859-2作为一个相关的问题PHP XML — Google Weather API — 解析和修改数据(语言、UTF-8 和 F 到摄氏度)显示。

您可以通过查看 HTTP 响应标头内容类型找出哪一个:

Content-Type: text/xml; charset=ISO-8859-1

您使用utf8_encodeDocs更改编码,它将ISO-8859-1(也称为Latin-1)编码字符串转换为UTF-8. 看起来对秘密谷歌天气 API 的标准查询默认返回这个。

oe您可以通过向查询添加参数来指定您想要的编码。例如直接获取它UTF-8

http://www.google.com/ig/api?weather=Mountain+View&oe=utf-8
                                                   ^

这样做将确保您始终获得特定的编码,而不是您需要猜测或解析响应标头。

于 2011-11-18T01:39:52.987 回答