一共两个示例,下面还有一个A32的专用版

UrlEncode网页编解码转义_不依赖IE

 

1.URLEncodeDecode编解码.ahk  依赖IE

已知情况:当腾讯管家打开时,此函数不能生效。加入信任也不行

url := "WinWait%2C+ahk_class+IEFrame%0D%0AWinSet%2C+AlwaysOnTop+%2C+On%2C+ahk_class+IEFrame%0D%0Aif+%28%E4%BB%8A%E6%97%A5%E6%96%B0%E9%97%BB%E5%B7%B2%E6%9B%B4%E6%96%B0%3D1%29%0D%0A%09WinMove%2C+ahk_class+IEFrame%2C+%2C1%2C1%2C595%2C710%0D%0A++else+if+%28%E4%BB%8A%E6%97%A5%E6%96%B0%E9%97%BB%E5%B7%B2%E6%9B%B4%E6%96%B0%3D2%29%0D%0A%09WinMove%2C+ahk_class+IEFrame%2C+%2C1%2C1%2C595%2C710+%3B+%E5%BE%85%E5%AE%9A%0D%0ASleep+1500%0D%0A%0D%0A%3B%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%98%AF%E6%96%B0%E6%88%AA%E5%8F%96%EF%BC%8C%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%98%AF%E8%80%81%E7%89%88%0D%0A%E5%B1%95%E5%BC%80%3A%3D%22%7C%3C%3E*209%2415.TU3wYJYWdyTYXMYAcY%7C%3C%3E*223%2416.001yz7zwTaVyzbxcTYVvm000U%22%0D%0A%E6%B3%A8%E5%86%8C%E7%99%BB%E5%BD%95%3A%3D%22%7C%3C%3E*200%2437.WBU00zDys00TcbQ00Dlzy00Dx9r003x4jU00wjzU00zk%22%0D%0ALoop+%7B%0D%0A%09if+%28ok%3A%3DFindText%280%2C+0%2C+1920%2C+1080%2C+0%2C+0%2C+%E5%B1%95%E5%BC%80%2C+%2C0%29%29+%7B%0D%0A%09%09X%3A%3Dok.1.x%2C+Y%3A%3Dok.1.y%2C+Comment%3A%3Dok.1.id%0D%0A%09%09Click%2C+%25X%25%2C+%25Y%25%0D%0A%09%09Break%0D%0A%09%7D+else+if+%28ok%3A%3DFindText%280%2C+0%2C+1920%2C+1080%2C+0%2C+0%2C+%E6%B3%A8%E5%86%8C%E7%99%BB%E5%BD%95%2C+%2C0%29%29+%7B%0D%0A%09%09Gosub+%E9%87%8D%E6%96%B0%E7%99%BB%E5%BD%95%E5%BE%AE%E5%8D%9A%0D%0A%09%09Break%0D%0A%09%7D%0D%0A%09Sleep+500%0D%0A%7D%0D%0A%0D%0ASleep+5000%0D%0A%0D%0AShape+%3A%3D+GetCursorShape%28%29%0D%0AToolTip+%25+%22%E7%89%B9%E5%BE%81%E7%A0%81%EF%BC%9A%22+Shape%0D%0ASleep+2000%0D%0AToolTip%0D%0A%0D%0ALoop+%7B%0D%0A%E5%85%89%E6%A0%87%E7%89%B9%E5%BE%81%E7%A0%81+%3A%3D+GetCursorShape%28%29%0D%0A%09if+%28%E5%85%89%E6%A0%87%E7%89%B9%E5%BE%81%E7%A0%81%3D2616319428%29%0D%0A%09%09Break%0D%0A%09else+%7B%0D%0A%09%09MouseGetPos%2C+X%2C+Y%0D%0A%09%09MouseMove%2C+%25X%25+%2C+%25+Y%2B10%2C+0%0D%0A%09%09%7D%0D%0A%09Sleep+200%0D%0A%7D%09"


decoded := EncodeDecodeURI(url, false)
encoded := EncodeDecodeURI(decoded)
msgbox,-------------------------------------------------`nDECODED=`n%decoded%`n-------------------------------------------------`nENCODED=`n%encoded%`n-------------------------------------------------
return

; https://www.autohotkey.com/boards/viewtopic.php?f=76&t=84825
EncodeDecodeURI(str, encode := true, component := true) {					; By teadrinker
   static Doc, JS
   StringReplace, str, str, +, %A_Space%, All ; 去连接符
   if !Doc {
      Doc := ComObjCreate("htmlfile")
      Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
      JS := Doc.parentWindow
      ( Doc.documentMode < 9 && JS.execScript() )
   }
   Return JS[ (encode ? "en" : "de") . "codeURI" . (component ? "Component" : "") ](str)
}

 

2.URLencode编解码【A32】.ahk

str := "WinWait%2C+ahk_class+IEFrame%0D%0AWinSet%2C+AlwaysOnTop+%2C+On%2C+ahk_class+IEFrame%0D%0Aif+%28%E4%BB%8A%E6%97%A5%E6%96%B0%E9%97%BB%E5%B7%B2%E6%9B%B4%E6%96%B0%3D1%29%0D%0A%09WinMove%2C+ahk_class+IEFrame%2C+%2C1%2C1%2C595%2C710%0D%0A++else+if+%28%E4%BB%8A%E6%97%A5%E6%96%B0%E9%97%BB%E5%B7%B2%E6%9B%B4%E6%96%B0%3D2%29%0D%0A%09WinMove%2C+ahk_class+IEFrame%2C+%2C1%2C1%2C595%2C710+%3B+%E5%BE%85%E5%AE%9A%0D%0ASleep+1500%0D%0A%0D%0A%3B%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%98%AF%E6%96%B0%E6%88%AA%E5%8F%96%EF%BC%8C%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%98%AF%E8%80%81%E7%89%88%0D%0A%E5%B1%95%E5%BC%80%3A%3D%22%7C%3C%3E*209%2415.TU3wYJYWdyTYXMYAcY%7C%3C%3E*223%2416.001yz7zwTaVyzbxcTYVvm000U%22%0D%0A%E6%B3%A8%E5%86%8C%E7%99%BB%E5%BD%95%3A%3D%22%7C%3C%3E*200%2437.WBU00zDys00TcbQ00Dlzy00Dx9r003x4jU00wjzU00zk%22%0D%0ALoop+%7B%0D%0A%09if+%28ok%3A%3DFindText%280%2C+0%2C+1920%2C+1080%2C+0%2C+0%2C+%E5%B1%95%E5%BC%80%2C+%2C0%29%29+%7B%0D%0A%09%09X%3A%3Dok.1.x%2C+Y%3A%3Dok.1.y%2C+Comment%3A%3Dok.1.id%0D%0A%09%09Click%2C+%25X%25%2C+%25Y%25%0D%0A%09%09Break%0D%0A%09%7D+else+if+%28ok%3A%3DFindText%280%2C+0%2C+1920%2C+1080%2C+0%2C+0%2C+%E6%B3%A8%E5%86%8C%E7%99%BB%E5%BD%95%2C+%2C0%29%29+%7B%0D%0A%09%09Gosub+%E9%87%8D%E6%96%B0%E7%99%BB%E5%BD%95%E5%BE%AE%E5%8D%9A%0D%0A%09%09Break%0D%0A%09%7D%0D%0A%09Sleep+500%0D%0A%7D%0D%0A%0D%0ASleep+5000%0D%0A%0D%0AShape+%3A%3D+GetCursorShape%28%29%0D%0AToolTip+%25+%22%E7%89%B9%E5%BE%81%E7%A0%81%EF%BC%9A%22+Shape%0D%0ASleep+2000%0D%0AToolTip%0D%0A%0D%0ALoop+%7B%0D%0A%E5%85%89%E6%A0%87%E7%89%B9%E5%BE%81%E7%A0%81+%3A%3D+GetCursorShape%28%29%0D%0A%09if+%28%E5%85%89%E6%A0%87%E7%89%B9%E5%BE%81%E7%A0%81%3D2616319428%29%0D%0A%09%09Break%0D%0A%09else+%7B%0D%0A%09%09MouseGetPos%2C+X%2C+Y%0D%0A%09%09MouseMove%2C+%25X%25+%2C+%25+Y%2B10%2C+0%0D%0A%09%09%7D%0D%0A%09Sleep+200%0D%0A%7D%09"
;FileEncoding ,UTF-8
;MsgBox % urldecode(str)
;MsgBox % Ansi2UTF8(str)
;MsgBox % Ansi2UTF8(urldecode(str))
MsgBox % UTF82Ansi(urldecode(str))
return

a:=urldecode(str)
FileAppend, %a%, D:\PSTools\Test.ahk
 
urlencode(string){
string := Ansi2UTF8(string)
StringLen, len, string
Loop % len {
  SetFormat, IntegerFast, hex
  StringMid, out, string, %A_Index%, 1
  hex := Asc(out)
  hex2 := hex
  StringReplace, hex, hex, 0x, , All
  SetFormat, IntegerFast, d
  hex2 := hex2
  If (hex2==33 || (hex2>=39 && hex2 <=42) || hex2==45 || hex2 ==46 || (hex2>=48 && hex2<=57) || (hex2>=65 && hex2<=90) || hex2==95 || (hex2>=97 && hex2<=122) || hex2==126)
    content .= out
  Else
    content .= "`%" hex
  }
  Return content
}
 
 
urldecode(string){
StringReplace, string, string, +, %A_Space%, All ;去连接符
Loop, Parse, string, `%
{
asc_key := A_LoopField
if A_index = 1
    content = % content asc_key ;直接串接
Else
    {
    if RegExMatch(asc_key,"i)[0-9a-f]{2}")
        {
        StringLeft, part1, asc_key, 2 ;分成两部分 hex 和单字节字符
        StringTrimLeft, part2, asc_key, 2
        asc_var := chr("0x" part1)
        content = % content asc_var part2
        }
    Else
        content = % content asc_key ;直接串接
    }
}
return content
}
 
Ansi2UTF8(sString)
{
   Ansi2Unicode(sString, wString, 0)
   Unicode2Ansi(wString, zString, 65001)
   Return zString
}
UTF82Ansi(zString)
{
   Ansi2Unicode(zString, wString, 65001)
   Unicode2Ansi(wString, sString, 0)
   Return sString
}
Ansi2Unicode(ByRef sString, ByRef wString, CP = 0)
{
     nSize := DllCall("MultiByteToWideChar"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &sString
      , "int", -1
      , "Uint", 0
      , "int", 0)
   VarSetCapacity(wString, nSize * 2)
   DllCall("MultiByteToWideChar"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &sString
      , "int", -1
      , "Uint", &wString
      , "int", nSize)
}
Unicode2Ansi(ByRef wString, ByRef sString, CP = 0)
{
     nSize := DllCall("WideCharToMultiByte"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &wString
      , "int", -1
      , "Uint", 0
      , "int", 0
      , "Uint", 0
      , "Uint", 0)
   VarSetCapacity(sString, nSize)
   DllCall("WideCharToMultiByte"
      , "Uint", CP
      , "Uint", 0
      , "Uint", &wString
      , "int", -1
      , "str", sString
      , "int", nSize
      , "Uint", 0
      , "Uint", 0)
}

 

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