奇怪的字符在XML响应从谷歌天气API错误


Strange Characters In XML Response From Google Weather API Error

我刚刚启动了一个我一直在开发的小应用程序。没什么大不了的,但我想让它正常工作。网址:www.wedrapp.com

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

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

有谁能告诉我如何去掉这些奇怪的字符,或者至少阻止它们在击中屏幕之前提供错误?

了解google返回的XML是哪种编码。然后将其从该编码重新编码为UTF-8,然后可以使用SimpleXML加载XML。

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

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

你可以通过查看HTTP响应头Content-Type:

找出是哪一个
Content-Type: text/xml; charset=ISO-8859-1

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

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

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

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