vba - 从 VBA 进行 UTF-8 调用
问题描述
我正在尝试调用 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() 等其他解决方案也通过将 + 和 , 转换为以 % 开头的值来制造更多混乱。
解决方案
我可以通过替换这一行来解决我的问题:
Set httpObject = CreateObject("MSXML2.XMLHTTP")
有了这个:
Set httpObject = CreateObject("MSXML2.ServerXMLHTTP")
推荐阅读
- asp.net-core - Autofac:带有 RouteValues 的 ITenantIdentificationStrategy
- x86 - 将扫描码转换为 ASCII
- javascript - 方法在附加到 html 时跳过一个项目
- three.js - (三.js)bloom over不bloom问题
- ios - 在 SwiftUI 中,frame(...) 等资格中的数字的单位是什么?
- excel - Listindex 值的类型是否与工作表中单元格的值不同?
- c# - 不必要的额外输入行
- javascript - 单击一个元素时,其他元素在 React JS 中禁用
- java - 如何获取 DDL 表单的字段名称?
- postgresql - PL/pgSQL 错误:为 RAISE 指定的参数过多