我正在处理英国地址数据和国际地址数据。

我需要对地址数据进行地理编码以在谷歌地图上使用。我正在使用 HTTP 服务来执行此操作。即/构造一个查询字符串并将其传递给 file_get_contents($THEURL)。

我已经成功地对 80% 的地址数据进行了完美的地理编码,但是挪威和瑞典等国家/地区包含特殊字符的地址将不会返回地理编码。返回的代码是 602(找不到地址)。

查看文档,我可以看到发送到 google 的字符串必须是 UTF8 编码的。

我已尝试以下操作来确保字符串是 UTF8 编码/删除特殊字符。

1) 对查询字符串使用 UTF8 编码 - 这通常会导致屏幕上显示格式错误的字符。

2) mb_check_encoding 报告字符串编码正确。

3)使用函数来替换欧洲等效字符的特殊字符(希望google api能够补偿。

任何人都可以提出我的方法不起作用的原因(是否与编码有关?)。

有帮助吗?

解决方案

您需要系统地检查系统中的每个编码方面并定义它的编码方式。 Mb_detect_encoding 猜测在这里不是一个好方法。

您需要检查以下内容的编码:

  • 传入数据
    • 页面
    • 获取参数
    • 数据库连接
    • 数据库表排序规则
  • 您使用的脚本文件

如果出现格式错误的字符,很可能您正在某处使用 ISO-8859-1 或其他一些非 UTF-8 编码。当一切都是干净的 UTF-8 时,请求应该会通过。

关于基础知识的一篇非常好的文章是 每个软件开发人员绝对必须了解 Unicode 和字符集的绝对最低限度(没有任何借口!).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top