距离矩阵中的 UTF-8 处理 API

UTF-8 handling in the Distance Matrix API

我正在尝试编写与 Google 的距离矩阵 Api 交互的 VBA 代码,并且 returns 我计算两点之间的距离。问题是,当我尝试使用拉丁字母(如 ã)时,它 returns 出现无效目标错误:

    <status>INVALID_REQUEST</status>
    <error_message>Invalid request. Invalid 'destinations' parameter.</error_message>
</DistanceMatrixResponse>

我用的Url是这样的:

https://maps.googleapis.com/maps/api/distancematrix/xml?units=metric&origins=Fortaleza&destinations=São+Paulo&key=" & myAPIK

你们知道解决这个问题的方法吗?

但是当我使用 UTF-8 代码而不是单词本身时,它 returns 我想要的距离:

https://maps.googleapis.com/maps/api/distancematrix/xml?units=metric&origins=Fortaleza&destinations=S%C3%A3o+Paulo&key=" & myAPIK

我也已经尝试将语言 (pt-BR) 放入 Url,但没有用。

您将想要查看实际网页的工作原理。

在 Chrome 中打开网页,然后在 DevTools (F12) 中查看请求流量,它会在网络选项卡上。

您必须在边栏中找到请求,通过 XHR 过滤会有所帮助。

当您找到请求本身时,它会告诉您它是如何编码的。拉丁语不太可能是传输编码参数,并且 UTF-8 可能在通过 JavaScript 输入规范化发送请求之前被过滤。但是,除非您检查 DevTools 中的 API,否则您无法确定。

此外,如果您只是使用 QueryString(也就是 url 中 API 参数的一部分)与 API 交互,则有一个 url编码可能正在发生。您可以在圣保罗使用 this website 查看其工作原理。您可能需要在 post/get API.

之前使用 urlencode 函数 'sanitize' 输入