Question

Je travaille avec les données d'adresse du Royaume-Uni et les données d'adresses internationales.

Je dois géocoder les données d'adresse pour les utiliser sur une carte Google. Je fais cela en utilisant le service HTTP. C'est-à-dire / Construire une chaîne de requête et la passer à file_get_contents ($ THEURL).

J'ai réussi à géocoder parfaitement 80% des données d'adresse. Toutefois, les adresses de pays comme Norvège et Suède contenant des caractères spéciaux ne renverront pas de géocode. Le code renvoyé est 602 (impossible de trouver une adresse).

En regardant dans la documentation, je constate que la chaîne envoyée à Google doit être encodée en UTF8.

J'ai essayé ce qui suit pour m'assurer que la chaîne est codée en UTF8 / supprimer les caractères spéciaux.

1) L'utilisation du codage UTF8 sur la chaîne de requête entraîne souvent l'affichage de caractères incorrects à l'écran.

2) mb_check_encoding indique que la chaîne est correctement codée.

3) Utiliser une fonction pour remplacer les caractères spéciaux par des caractères spéciaux (dans l’espoir que google api compensera.

Quelqu'un peut-il suggérer une raison pour laquelle ma méthode ne fonctionne pas (qu'il s'agisse d'encodage ou non?).

Était-ce utile?

La solution

Vous devez systématiquement passer en revue tous les aspects du codage de votre système et définir son codage. Mb_detect_encoding et la conjecture ne constitue pas une bonne approche.

Vous devez vérifier le codage de:

  • données entrantes
    • pages
    • Paramètres GET
    • connexion à la base de données
    • classements de table de base de données
  • les fichiers de script avec lesquels vous travaillez

Si des caractères mal formés se produisent, il est probable que vous utilisiez quelque part le codage ISO-8859-1 ou un autre codage non UTF-8. Lorsque tout est en mode UTF-8, la requête doit être traitée.

Un minimum absolu pour chaque développeur de logiciel est un très bon article sur les bases À propos de Unicode et des jeux de caractères (sans excuses!) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top