【发布时间】:2018-05-04 20:07:53
【问题描述】:
我正在尝试调用 openstreetmap(特别是 https://nominatim.openstreetmap.org/search?amenity=charging_station&format=json&q=Elly-Beinhorn-Ring+2,12529+Schönefeld ) 并且从任何网络浏览器都可以正常工作。通过 Excel VBA 调用时抱怨字符串不是 UTF-8。我还没有使用过提琴手,但对我来说很明显 srequest 应该是 UTF-8 格式。我找到了另一种将 url 转换为 ascii 的解决方案,但我更喜欢在 utf-8 中使用它,这是一些会产生错误的示例代码:
Dim httpObject As Object
Set httpObject = CreateObject("MSXML2.XMLHTTP")
srequest = "https://nominatim.openstreetmap.org/search?amenity=charging_station&format=json&q=Elly-Beinhorn-Ring+2,12529+Schönefeld"
httpObject.Open "GET", srequest, False
httpObject.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
httpObject.send
sgetResult = httpObject.responsetext
Debug.Print sgetResult
如果有人可以帮助如何强制 MSXML2 进行 utf-8 调用,我会很高兴。目前我的解决方案是将德语变音符号 (ä,ü,ö) 替换为 (ae,ue,oe) ,这有效但不是我想要的。 URLEncode() 等其他解决方案也将 + 和 , 转换为以 % 开头的值,从而造成了更多混乱。
【问题讨论】:
-
如果只需要在工作簿数据刷新时使用webservice,可以考虑使用Power Query。
-
嗨,汤姆,感谢您的提示。我有一堆想要地理编码的个人地址。据我了解,Powerquery 不适用于这种情况。
-
您可以提出不同的问题。但简而言之,您可以轻松地在表格、列表和结构化文本(包括 JSON 和 XML)之间进行转换。菜单和对话框可以插入或编辑转换步骤,或者您可以自己编写全部或部分代码。