在Google Map API地理编码中查询中文地址

时间:2010-01-28 16:44:46

标签: google-maps geocoding cjk

我正在关注phpsqlgeocode.html

文章中的演示代码

在db中,我插入了一些中文地址,这些地址是utf-8编码的。一世 在urlencode之后找到中文地址,输出地址 会错的。像这样:

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

然后输出200,5,59.3266963,18.2733433(我不能通过PHP查询,而是通过浏览器查询)。

这个地址实际上位于台湾台中,但事实证明是这样 在瑞典,欧洲。但是当我粘贴中文地址(如台中市西屯区智惠 街131巷56号58号60号)在网址上,结果很好!

如何确保发送原始中文 地址?如何避免urlencode()?我发现删除urlencode()并没有改变任何内容。

(我已将maps.google.com中的MAPS_HOST更改为 maps.google.com.tw。) (我确定我的密钥是正确的,其他英文地址地理编码是 细。)

1 个答案:

答案 0 :(得分:0)

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

解码为:

?????????132?

所以在URL编码之前已经破坏了字符串。如果您尝试将中文字符转换为不支持中文字符的编码(例如Latin-1),则可能会发生这种情况。

您需要确保在整个应用程序中始终如一地使用UTF-8。特别是,您需要确保使用UTF-8字符集存储数据库中的表;在MySQL术语中,UTF-8整理。 MySQL的默认排序规则是Latin-1。您还需要通过调用1mysql_set_charset('utf-8')来确保您与数据库的连接使用UTF-8。

(我猜你的问题是你正在使用PHP。)