Google Geocode: PHP Implementação - problemas de codificação de caracteres
-
22-07-2019 - |
Pergunta
Eu estou trabalhando com dados de endereço do Reino Unido e também dados de endereço International.
Eu preciso para geocodificar os dados de endereço para uso em um mapa do Google. Eu estou fazendo isso usando o serviço HTTP. Ie / Construindo uma string de consulta e passá-la para file_get_contents ($ Theurl).
Eu consegui geocode 80% dos dados de endereço perfeitamente, no entanto esses endereços em países como a Noruega e Sweeden que contêm caracteres especiais não irá retornar um código geocode.The retornado é 602 (não pode encontrar um endereço).
Olhando para a documentação que eu posso ver que a cadeia enviada para o Google deve ser UTF8 codificado.
Eu tentei o seguinte para garantir a string é UTF8 codificado / remover os caracteres especiais.
1) Usar codificação UTF8 na cadeia de consulta -. Isso muitas vezes resulta em caracteres malformados que está sendo exibido na tela
2) mb_check_encoding relatórios a string é codificado corretamente.
3) Usando uma função para substitue caracteres especiais para vários daqueles eqivilents europiene (na esperança google api vai compensar.
Alguém pode sugerir uma razão pela qual o meu método não está funcionando (seja a ver com codificação ou não?).
Solução
Você precisa ir sistematicamente em todos os aspectos de codificação em seu sistema e definir o que codificação é no. Mb_detect_encoding
e conjecturas não são uma boa abordagem aqui.
Você precisa verificar a codificação de:
- dados de entrada
- páginas
- parâmetros GET
- Conexão de banco de dados
- agrupamentos de tabela de banco de dados
- os arquivos de script que trabalham com você
Se ocorrer caracteres malformados, as chances são que você está usando ISO-8859-1 ou algum outro não-UTF-8 em algum lugar. Quando tudo é limpo UTF-8, o pedido deve passar.
Um bom artigo sobre o básico é O desenvolvedor Absolute Minimum cada Software Absolutamente, Positivamente Precisa Saber Sobre Unicode e Conjuntos de caracteres (Sem desculpas!) .