Странные символы в XML-ответе от ошибки Google Weather API

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

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

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

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

1 ответ

Решение

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

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

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

Вы можете узнать, какой из них, заглянув в HTTP-тип заголовка ответа:

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
                                                   ^

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

Другие вопросы по тегам