谷歌地理编码:PHP实现——字符编码问题
-
22-07-2019 - |
题
我正在处理英国地址数据和国际地址数据。
我需要对地址数据进行地理编码以在谷歌地图上使用。我正在使用 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 和字符集的绝对最低限度(没有任何借口!).
不隶属于 StackOverflow