Heim > Artikel > Web-Frontend > Die URL-Kodierungs- und Dekodierungsmethode unter Javascript ist mit decodeURIComponent verbunden
In Bezug auf die Codierungsergebnisse von ASP (Server.UrlEncode), der PHP-Funktion (urlencode()) oder den chinesischen Zeichen, die über dynamische Sprachen wie ASP und PHP direkt in COOKIES geschrieben werden, werden Sie beim Lesen mit JS auf Folgendes stoßen a Das Codierungsproblem besteht darin, dass die endgültige Zeichenfolge durch URLencode codiert wird und es manchmal erforderlich ist, die Daten von JS auf der Clientseite zu lesen.
In diesem Artikel wird kurz darauf eingegangen, wie dieses Problem in js durch die systemeigenen Funktionen gelöst werden kann.
Ich glaube, dass Freunde, die auf dieses Problem gestoßen sind, etwas Verständnis haben sollten. Derzeit sind einige benutzerdefinierte Funktionen unter js im Internet beliebt, um dieses Problem zu lösen, wie z. B. vbscript (URLDecode()), Javascript (UrlDecode(). ))Warten. Keine dieser beiden Funktionen kann gut miteinander kommunizieren: asp (Server.UrlEncode) und php (urlencode()).
Über vbscript (Funktion URLDecode()) und Javascript (Funktion UrlDecode()) wird am Ende dieses Artikels ebenfalls berichtet.
Der Protagonist dieses Artikels ist Javascript (UrlDecodedecodeURIComponent()). Dieser Funktionsname ist so gebräuchlich, dass ich ihn persönlich nicht wirklich verstehe. Schließlich gibt es in js viele Systemfunktionen und es ist einfach vermisse es. Worry hat diese Funktion zufällig entdeckt!
Kodierungsfunktion: encodeURIComponent()
Dekodierungsfunktion: decodeURIComponent()
decodeURIComponent()-Syntax
decodeURIComponent(URIstring) 参 数:(URIstring)必需。一个字符串,含有编码 URI 组件或其他要解码的文本。 返回值:URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。
Beispiel:
<script type="text/javascript"> var test1="烦恼"; var test2="%E7%83%A6%E6%81%BC"; document.write("编码(原="+test1+"):"+encodeURIComponent(test1)+ "<br />"); document.write("解码(原="+test2+"):"+decodeURIComponent(test2)); </script>
Ergebnis:
编码(原=烦恼):%E7%83%A6%E6%81%BC 解码(原=%E7%83%A6%E6%81%BC):烦恼
Hinweis: Dieser Artikel wurde nur in der UTF-8-Kodierungsumgebung getestet. Denn in verschiedenen Codierungsumgebungen scheint der kompilierte Code von asp (Server.UrlEncode) unterschiedlich zu sein und muss getestet werden!
Beigefügter Nachdruck:
vbscript (Funktion URLDecode())
<script type="text/VBscript"> <!-- Function URLDecode(enStr) dim deStr,strSpecial dim c,i,v deStr="" strSpecial="!""#$%&'()*+,.-_/:;<=>?@[\]^`{|}~%" for i=1 to len(enStr) c=Mid(enStr,i,1) if c="%" then v=eval("&h"+Mid(enStr,i+1,2)) if inStr(strSpecial,chr(v))>0 then deStr=deStr&chr(v) i=i+2 else v=eval("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2)) deStr=deStr & chr(v) i=i+5 end if else if c="+" then deStr=deStr&" " else deStr=deStr&c end if end if next URLDecode=deStr End function //--> </script>
Javascript (Funktion UrlDecode()) verwendet vbscript tatsächlich sanft für asc, hex, Bei chr-bezogenen Konvertierungen wie str.charCodeAt(0).toString(16) und String.fromCharCode(str) sind die Kodierungsergebnisse für Chinesisch unter verschiedenen Kodierungen nicht einheitlich.
Zum Beispiel: vbscript str2asc/asc2str
<script type="text/vbscript"> Function str2asc(strstr) str2asc = hex(asc(strstr)) End Function Function asc2str(ascasc) asc2str = chr(ascasc) End Function MsgBox str2asc("a") MsgBox asc2str("&H61")'16进制转的61 转到 10进制就是 97 </script>
javascript str2asc/asc2str
<script type="text/javascript"> function str2asc(str){ return str.charCodeAt(0).toString(16); } function asc2str(str){ return String.fromCharCode(str); } alert(str2asc("a"));// alert(asc2str("0x61"));// </script>
Demo:
<script type="text/vbscript"> Function str2asc(strstr) str2asc = hex(asc(strstr)) End Function Function asc2str(ascasc) asc2str = chr(ascasc) End Function </script> <script type="text/javascript"> /*这里开始时UrlEncode和UrlDecode<a href="/?tag=%E5%87%BD%E6%95%B0" target="_blank">函数</a>*/ function UrlEncode(str){ var ret=""; var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%"; var tt= ""; for(var i=0;i<str.length;i++){ var chr = str.charAt(i); var c=str2asc(chr); tt += chr+":"+c+"n"; if(parseInt("0x"+c) > 0x7f){ ret+="%"+c.slice(0,2)+"%"+c.slice(-2); }else{ if(chr==" ") ret+="+"; else if(strSpecial.indexOf(chr)!=-1) ret+="%"+c.toString(16); else ret+=chr; } } return ret; } function UrlDecode(str){ var ret=""; for(var i=0;i<str.length;i++){ var chr = str.charAt(i); if(chr == "+"){ ret+=" "; }else if(chr=="%"){ var asc = str.substring(i+1,i+3); if(parseInt("0x"+asc)>0x7f){ ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6))); i+=5; }else{ ret+=asc2str(parseInt("0x"+asc)); i+=2; } }else{ ret+= chr; } } return ret; } alert(UrlDecode("%C2%D2%C2%EB")); </script>
Mehr URL-Kodierung und -Dekodierung unter Javascript Bitte beachten Sie die chinesische PHP-Website für verwandte Artikel zu decodeURIComponent, die der Methode beigefügt sind!