来自Google Weather API错误的XML响应中的奇怪字符

时间:2011-11-18 01:31:09

标签: php xml encoding google-weather-api

我刚刚推出了一个我一直在努力的小应用程序。没什么大不了的,但我希望能够正常工作。它位于www.wedrapp.com

大部分时间它完美无缺。输入一个城市,返回,解析XML,并向用户显示返回的数据。

不幸的是,当搜索某些城市(例如马赛)时会返回错误。如果你搜索马赛,你会看到我的意思。我觉得这与特殊角色有关,因为马赛搜索实际上在XML中返回马赛,普罗旺斯 - 阿尔卑斯 - 蓝色海岸。同样巴黎给出了一个错误,因为它实际上返回巴黎,法兰西岛。

任何人都可以了解如何剥离这些奇怪的角色,或至少阻止他们在击中屏幕之前提供错误?它是用PHP解析的XML。

1 个答案:

答案 0 :(得分:3)

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

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

例如,ISO-8859-2可以显示相关问题PHP XML — Google Weather API - parsing and modifying data (Language, UTF-8, and F to Celsius)

您可以通过查看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
                                                   ^

执行此操作将确保您始终获得特定的编码,而不是您需要猜测或解析响应标头。