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

问题描述:

我刚刚推出了一个我一直在研究的小应用程序。没什么重要的,但我想得到正确的工作。它在www.wedrapp.com来自Google Weather API的XML响应中的奇怪字符错误

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

不幸的是,当搜索到某些城市如马赛时,返回错误。如果你搜索马赛,你会明白我的意思。我有一种感觉,就是对特殊字符的处理,因为马赛搜索实际上是以XML格式返回马赛,普罗旺斯 - 阿尔卑斯 - 蓝色海岸。同样,巴黎给出了一个错误,因为它实际上是返回巴黎,法兰西岛。

任何人都可以阐明如何去除这些奇怪的字符,或者至少阻止他们提供错误,然后再击中屏幕?它是用PHP解析的XML。

+0

看来我需要找到一种方法来解析XML编码,而不是UTF-8,如下所述:http://*.com/questions/5964214/problem-parsing-google-weather-data-only - 用于巴黎。 谁能告诉我如何用正确的编码解析它? – cian1991ferrari

+0

可爱的用户界面,你有,顺便说一句。 –

+0

非常感谢Levi! :) – cian1991ferrari

找出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之一:

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 
               ^

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

+0

感谢Hakre,只是使用utf8_encode()函数重新编码为UTF-8。现在显示完美! :D – cian1991ferrari

+0

@ cian1991ferrari:我扩展了答案,解释了为什么以及如何获得编码为UTF-8的响应。 – hakre

+0

这个oe param ='utf-8'正在像一个魅力。非常感谢! –