Странные символы в 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
^
Это гарантирует, что вы всегда получите конкретную кодировку, которую вам нужно угадать или проанализировать заголовки ответа.