Vba VB宏根据REST请求更改编码

Vba VB宏根据REST请求更改编码,vba,encoding,Vba,Encoding,我有一个excel文件,其中有一个按钮与VB宏关联,如下所示: Sub button_macro() Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") MyRequest.Open "GET", "http://theurl/service?param=""Gestión""" MyRequest.Send

我有一个excel文件,其中有一个按钮与VB宏关联,如下所示:

Sub button_macro()
    Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    MyRequest.Open "GET", "http://theurl/service?param=""Gestión"""
    MyRequest.Send
End Sub
但我得到的反应是:

"Gestión" is not a valid value for param.
如何避免VB将“ó”字符转换为其他编码

如果我通过浏览器发送请求,如:

http://theurl/service?param="Gestión"
服务将根据需要进行应答

编辑:


奇怪的是,
MsgBox“Códigoúnico”
可以正常工作,正确显示“ó”和“ú”字符。

它可以在浏览器中工作,因为浏览器为您编码请求-您可以看到,如果您使用浏览器的开发工具-例如您的“示例”URL

我明白了


您可以使用(例如)UTF支持方法对您的参数进行编码,该方法来自此处的公认答案:

它在没有引号的情况下工作吗?我从未见过引用的querystring参数……真正的用例包含几个param单词,比如“Gestión CAR”,所以我必须用双引号将它们括起来(服务不能以其他方式工作)。也许(你可能需要UTF支持一个已接受的答案)它在浏览器中工作,因为浏览器为你编码请求-你可以看到,如果你使用浏览器的开发工具-例如你的
http://theurl/service?param=“Gestion”
我明白了
http://theurl/service?param=%22Gesti%C3%B3n%22
请尝试以下操作:
myRequest.Open“GET”http://theurl/service?param=&WorksheetFunction.EncodeURL(“Gestión”)
。它应该适用于任何包含需要编码的字符的字符串。
http://theurl/service?param="Gestión" 
http://theurl/service?param=%22Gesti%C3%B3n%22