代码之家  ›  专栏  ›  技术社区  ›  Robert

谷歌地图API地理编码中的中文地址查询

  •  0
  • Robert  · 技术社区  · 16 年前

    下面是PHPSQLGoCode文章中的演示代码。html

    在数据库中,我插入了一些utf-8编码的中文地址。我 在对中文地址进行URL编码后发现,该地址的输出 那就错了。就像这个:

    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查询,而是通过浏览器查询)。

    这个地址实际上位于台湾台中,但事实证明是 在瑞典,欧洲。但是当我粘贴中文地址(例如è± 在url中,结果很好!

    我如何确保它发送原始中文 住址我如何避免 urlencode() ? 我发现 urlencode() 不会改变任何事。

    (我已将MAPS_主机从MAPS.google.com更改为 地图。谷歌。通用域名格式。tw.) (我确信我的钥匙是对的,其他英文地址的地理编码也是对的。) 好的。)

    1 回复  |  直到 14 年前
        1
  •  0
  •   bobince    16 年前
    q=%3F%3F%3F%3F%3F%3F%3F%3F%3F132%3F
    

    解码为:

    ?????????132?
    

    所以在URL编码之前,字符串已经被破坏了。如果您试图将汉字转换为不支持汉字的编码,例如拉丁-1,则可能会发生这种情况。

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

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

    推荐文章