Google Geocode:PHP 实现 - 字符编码问题

发布于 2024-08-12 19:55:30 字数 477 浏览 3 评论 0原文

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

我需要对地址数据进行地理编码以在谷歌地图上使用。我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光匆匆的小流年 2024-08-19 19:55:30

您需要系统地检查系统中的每个编码方面,并定义它的编码方式。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:

  • incoming data
    • pages
    • GET parameters
    • database connection
    • database table collations
  • the script files you work with

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!).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文