0

我正在关注 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%3F1

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

这个地址其实是在台湾台中,结果却是在欧洲的瑞典。但是当我把中文地址(如台中市西屯区智惠街131巷56号58号60号)粘贴到url中时,结果却是没问题!

我如何确保它发出原始的中文地址?我该如何避免urlencode()?我发现删除urlencode()不会改变任何东西。

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

4

1 回答 1

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。)

于 2010-01-28T17:06:42.373 回答