Странные символы в XML-ответе от ошибки Google Weather API - PullRequest
1 голос
/ 18 ноября 2011

Я только что запустил небольшое приложение, над которым я работал. Ничего особенного, но что-то, что я хотел бы получить как следует. Это на www.wedrapp.com .

Большую часть времени он работает отлично. Введите город, XML возвращается, анализируется и возвращаемые данные показываются пользователю.

К сожалению, однако, возвращается ошибка при поиске в некоторых городах, таких как Марсель. Если вы поищете в Марселе, вы поймете, о чем я. У меня есть ощущение, что это связано со специальными символами, поскольку поиск Марселя фактически возвращает Марсель, Прованс-Альпы-Лазурный берег в XML. Точно так же Париж дает ошибку, поскольку фактически возвращает Париж, Иль-де-Франс.

Может ли кто-нибудь пролить свет на то, как убрать эти странные символы, или хотя бы прекратить выдавать ошибку, прежде чем попасть на экран? Это синтаксический анализ XML с PHP.

1 Ответ

3 голосов
/ 18 ноября 2011

Узнайте, в какой кодировке находится XML, возвращенный Google.Затем перекодируйте его из этой кодировки в UTF-8, затем вы можете загрузить XML с помощью SimpleXML.

. XML-код Google Weather API имеет кодировку, основанную на языке, который указывается при запросе (Можно также указать кодировку, которую вы хотите иметь, я скоро к этому вернусь).

Например, это может быть ISO-8859-2 как связанный вопрос PHP XML - Google Weather API - парсинги изменение данных (язык, UTF-8 и F в градусах Цельсия) показывает.

Какой из них можно узнать, заглянув в заголовок ответа HTTP-Content-Type:

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

Вы использовали utf8_encode Документы для изменения кодировки, она преобразует кодированную строку ISO-8859-1 (также называемую Latin-1) в UTF-8.Похоже, что стандартные запросы к секретному API погоды Google возвращают это по умолчанию.

Вы можете указать желаемую кодировку, добавив в запрос параметр oe.Например, чтобы получить его непосредственно как UTF-8:

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

Это позволит вам всегда получать конкретную кодировку, а не угадывать или анализировать заголовки ответа.

...