这段代码主要用于解决通过 HTTP 请求获取的数据出现乱码的问题。它提供了两种方法来正确解码从服务器返回的乱码内容。

 

; ahkhttp端不设置 Server.AddHeader(res, "Content-type", "text/plain; charset=utf-8")
; 返回乱码时,可用这个函数修正乱码内容

str := "123你好"

MsgBox % RtnBuff(str)  ; 应返回 "123你好" 【网站对乱码支持有限】
Return

RtnBuff(str) {
  Local
  VarSetCapacity( Tempstr, StrPut(str, "CP28591") * 2 )
  , StrPut(str, &Tempstr, "CP28591")
  return StrGet(&Tempstr, "UTF-8")
}

; 方法二
URL := "http://127.0.0.1:59506/regguest"

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", URL, true)
; whr.SetRequestHeader("Accept-Encoding", "gb2312")
whr.Send()
whr.WaitForResponse()
; MsgBox % whr.ResponseText

; 处理返回乱码
Stream := ComObjCreate("ADODB.Stream")
Stream.Type := 1
Stream.Open()
Stream.Write(whr.ResponseBody)
Stream.Position := 0
Stream.Type := 2
Stream.Charset := "UTF-8"  ; 或者其它编码 gb2312
MsgBox % """" 请求结果 := Stream.ReadText() """"
Return

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。