【问题标题】:Strange Characters In XML Response From Google Weather API Error来自 Google Weather API 错误的 XML 响应中的奇怪字符
【发布时间】:2011-12-31 21:08:30
【问题描述】:

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

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

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

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

【问题讨论】:

  • 看来我需要找到一种方法来解析除 UTF-8 以外的编码的 XML 响应,如下所述:stackoverflow.com/questions/5964214/…。谁能告诉我如何用正确的编码解析它?
  • 可爱的用户界面,顺便说一句。

标签: php xml encoding google-weather-api


【解决方案1】:

找出 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
                                                   ^

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

【讨论】:

  • 感谢 Hakre,刚刚使用 utf8_encode() 函数重新编码为 UTF-8。现在完美显示! :D
  • @cian1991ferrari:我扩展了答案,解释了为什么以及如何将响应编码为 UTF-8。
  • 这个 oe param = 'utf-8' 就像一个魅力。非常感谢!
猜你喜欢
  • 2012-08-22
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2020-12-04
  • 2014-04-25
  • 2011-09-09
  • 2017-06-16
相关资源
最近更新 更多