2010-01-28 22 views
0

que je suis le code de démonstration de l'article de phpsqlgeocode.htmlInterrogation adresses chinois API Googlemap géocodage

Dans le db, j'ai inséré quelques adresses chinoises, qui sont utf-8 codés. I trouvé après urlencode l'adresse chinoise, la sortie de l'adresse aurait tort. Comme celui-ci:

http://maps.google.com.tw/maps/geo?output=csv&key=ABQIAAAAfG3KxFZXjEslq8VNxMBpKRR08snBovzCxLQZ9DWwpnzxH-ROPxSAS9Q36m-6OOy0qlwTL6Ht9qp87w&q=%3F%3F%3F%3F%3F%3F%3F%3F%3F132%3F

Ensuite, sorties 200,5,59.3266963,18.2733433 (je ne peux pas interroger ce par PHP, mais à travers le navigateur à la place).

Cette adresse est actuellement située à Taichung, Taiwan, mais il s'avère être en Suède, Europe. Mais quand je colle l'adresse chinoise (comme 台中市 西屯 區 智 惠 街 131 巷 56 號 58 號 60 號) dans l'URL, le résultat s'avère être bon!

Comment puis-je m'assurer qu'il envoie l'adresse d'origine chinoise ? Comment puis-je éviter urlencode()? J'ai trouvé que la suppression urlencode() ne change rien.

(j'ai changer le MAPS_HOST de maps.google.com à maps.google.com.tw.) (je suis sûr que ma clé est bonne, et une autre adresse en anglais géocodage sont bien.)

+0

Devrait avoir tag php. L'encodage de l'URL ne fonctionne manifestement pas. % 3F dans l'url est un '?', Qui est le résultat d'un encodage ou d'un décodage échoué. Il semble que urlencode ne supporte pas UTF-8, d'après http://php.net/manual/en/function.urlencode.php –

+0

urlencode code simplement les chaînes de caractères natives de PHP, quel que soit leur codage; il ne sait rien à propos d'Unicode. Quelque chose a déjà déchiqueté les caractères chinois avant qu'URLENCODE ne s'y intéresse. – bobince

Répondre

0
q=%3F%3F%3F%3F%3F%3F%3F%3F%3F132%3F 

décodent à:

?????????132? 

donc quelque chose a corrompu la chaîne déjà avant le codage URL. Cela peut arriver si vous essayez de convertir les caractères chinois en un encodage qui ne supporte pas les caractères chinois, tels que Latin-1.

Vous devez vous assurer que vous utilisez UTF-8 de manière cohérente via votre application. En particulier, vous devrez vous assurer que les tables de la base de données sont stockées à l'aide d'un jeu de caractères UTF-8; en termes de MySQL, un classement UTF-8. Le classement par défaut pour MySQL est Latin-1. Vous devez également vous assurer que votre connexion à la base de données utilise UTF-8 en appelant 1mysql_set_charset ('utf-8') `.

(Je devine à partir de votre question que vous utilisez PHP.)