Геокод Google:Реализация PHP - проблемы с кодировкой символов
-
22-07-2019 - |
Вопрос
Я работаю с британскими адресными данными, а также с международными адресными данными.
Мне нужно геокодировать адресные данные для использования на карте Google.Я делаю это с помощью HTTP-сервиса.Ie/ Создает строку запроса и передает ее в file_get_contents($THEURL).
Мне удалось идеально геокодировать 80% адресных данных, однако те адреса в таких странах, как Норвегия и Швеция, которые содержат специальные символы, не будут возвращать геокод.Возвращаемый код 602 (не удается найти адрес).
Заглядывая в документацию, я вижу, что строка, отправленная в Google, должна быть закодирована в UTF8.
Я попробовал следующее, чтобы убедиться, что строка закодирована в UTF8 / удалить специальные символы.
1) Использование кодирования UTF8 в строке запроса - это часто приводит к отображению на экране искаженных символов.
2) mb_check_encoding сообщает, что строка правильно закодирована.
3) Использование функции для замены специальных символов на их европейские эквиваленты (в надежде, что Google api компенсирует это.
Кто-нибудь может подсказать причину, по которой мой метод не работает (независимо от того, связано это с кодировкой или нет?).
Решение
Вам нужно систематически проработать каждый аспект кодирования в вашей системе и определить, в какой кодировке он находится. Mb_detect_encoding
и строить догадки здесь не самый лучший подход.
Вам нужно проверить кодировку:
- входящие данные
- страницы
- ПОЛУЧЕНИЕ параметров
- подключение к базе данных
- параметры сортировки таблиц базы данных
- файлы сценариев, с которыми вы работаете
Если встречаются искаженные символы, скорее всего, вы используете ISO-8859-1 или какую-либо другую кодировку, отличную от UTF-8.Когда все будет в чистом UTF-8, запрос должен пройти.
Очень хорошая статья об основах такова Абсолютный минимум, который Абсолютно, Положительно должен знать каждый разработчик программного обеспечения о Unicode и наборах символов (Никаких оправданий!)..