Google Geocode:PHP 实现 - 字符编码问题
我正在处理英国地址数据和国际地址数据。
我需要对地址数据进行地理编码以在谷歌地图上使用。我正在使用 HTTP 服务来执行此操作。即/构造一个查询字符串并将其传递给 file_get_contents($THEURL)。
我已经成功地对 80% 的地址数据进行了完美的地理编码,但是挪威和瑞典等国家/地区包含特殊字符的地址将不会返回地理编码。返回的代码是 602(找不到地址)。
查看文档,我可以看到发送到 google 的字符串必须是 UTF8 编码的。
我已尝试以下操作来确保字符串是 UTF8 编码/删除特殊字符。
1) 对查询字符串使用 UTF8 编码 - 这通常会导致屏幕上显示格式错误的字符。
2) mb_check_encoding 报告字符串编码正确。
3)使用一个函数来替换欧洲等效的特殊字符(希望google api能够补偿。
任何人都可以提出我的方法不起作用的原因(是否与编码有关?)。
I'm working with UK address data and also International address data.
I need to geocode the address data for use on a google map. I'm doing this using the HTTP service. Ie/ Constructing a query string and passing it to file_get_contents($THEURL).
I've managed to geocode 80% of the address data perfectly, however those addresses in countries like Norway and Sweeden that contain special characters will not return a geocode.The code returned is 602 (cannot find an address).
Looking into the documentation I can see that the string sent to google must be UTF8 encoded.
I've tried the following to ensure the string is UTF8 encoded / remove the special characters.
1) Using UTF8 encode on the query string - this often results in malformed characters being displayed on the screen.
2) mb_check_encoding reports the string is correctly encoded.
3) Using a function to substitue special characters for thier europiene eqivilents (in the hope google api will compensate.
Can anyone suggest a reason why my method isn't working (whether to do with encoding or not?).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要系统地检查系统中的每个编码方面,并定义它的编码方式。
Mb_detect_encoding
和猜测在这里不是一个好方法。您需要检查以下内容的编码:
如果出现格式错误的字符,则您可能在某处使用 ISO-8859-1 或其他一些非 UTF-8 编码。当一切都是干净的 UTF-8 时,请求应该会通过。
关于基础知识的一篇非常好的文章是 每个软件开发人员绝对必须了解的绝对最低限度关于 Unicode 和字符集(没有任何借口!)。
You need to systematically go through every encoding aspect in your system and define what encoding it is in.
Mb_detect_encoding
and guesswork are not a good approach here.You need to check the encoding of:
If malformed characters occur, chances are you are using ISO-8859-1 or some other non-UTF-8 encoding somewhere. When everything is clean UTF-8, the request should go through.
A very good article on the basics is The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!).