Я только что запустил небольшое приложение, над которым я работал. Ничего серьезного, но я бы хотел нормально работать. Это на www.wedrapp.com .
Большую часть времени он отлично работает. Введите город, возвращается XML, анализируется и возвращенные данные отображаются пользователю.
К сожалению, однако, при поиске некоторых городов, таких как Марсель, возвращается ошибка. Если вы ищете Марсель, вы увидите, что я имею в виду. У меня есть чувство, что это связано со специальными персонажами, поскольку Марсель обыскал, фактически, Марсель, Прованс-Альпы-Лазурный берег в XML. Точно так же Париж дает ошибку, так как он фактически возвращает Париж, Иль-де-Франс.
Может ли кто-нибудь пролить свет на то, как удалить эти странные символы, или, по крайней мере, остановить их, предоставив ошибку, прежде чем нажать экран? XML обрабатывается с помощью PHP.
Узнайте, в чем кодировка XML, возвращаемая google. Затем перекодируйте его из этой кодировки в UTF-8, затем вы можете загрузить XML с помощью SimpleXML
.
Google API API Google Weather имеет кодировку на основе языка, который указан при запросе (возможно указать кодировку, которую вы хотите иметь, я скоро приду к этому).
Например, это может быть ISO-8859-2
как связанный вопрос. PHP XML – API Google Weather – показывает синтаксический анализ и изменение данных (Language, UTF-8 и F to Celsius) .
Вы можете узнать, какой из них можно найти в заголовке HTTP-заголовка Content-Type:
Content-Type: text/xml; charset=ISO-8859-1
Вы использовали utf8_encode
Docs для изменения кодировки, он преобразует кодированную строку ISO-8859-1
(также называемую Latin-1
) в UTF-8
. Похоже, что стандартные запросы к секретному API погоды google возвращают это по умолчанию.
Вы можете указать кодировку, которую хотите добавить, добавив в запрос параметр oe
. Например, чтобы получить его непосредственно как UTF-8
:
http://www.google.com/ig/api?weather=Mountain+View&oe=utf-8 ^
Выполнение этого гарантирует, что вы всегда получите конкретную кодировку, вместо этого вам нужно угадать или разобрать заголовки ответов.