Heim > Web-Frontend > js-Tutorial > Hauptteil

Tipps zu JavaScript encodeURI und encodeURIComponent_javascript

WBOY
Freigeben: 2016-05-16 15:27:26
Original
1569 Leute haben es durchsucht

Die Funktionen encodeURI und encodeURIComponet werden beide in JavaScript verwendet, um URIs zu kodieren und relevante Parameter in Daten im UTF-8-Kodierungsformat umzuwandeln. Wenn der URI einen Standortsprung durchführt, werden Nicht-ASCII-Codes wie Chinesisch und Japanisch in den Parametern konvertiert.

Die Funktionen dieser beiden Funktionen sind relativ ähnlich, es gibt jedoch einige Unterschiede.

encodeURI: Es gibt 82 Zeichen, die nicht codiert werden: !, #, $, &, ', (,), *, ,,,-,.,/,:,;,=,?,@, _,~,0-9,a-z,A-Z
encodeURIComponent: Es gibt 71 Zeichen, die nicht codiert werden: !, ', (,), *, -, ., _, ~, 0-9, a-z, A-Z

Frage:

ajax.get ( url '?k1'=v1 '&k2'=v2 '&k3'=v3, ... );

Da die URL nur encodeURI-codiert ist, wird der Parameter, den Sie übermitteln möchten, searchWord = a b, zu einem b.


Lösung:


ajax.post( URL, Parameter,....)


 wobei params das Objekt ist.


Grund: Wenn der Parameter ein Objekt oder Array ist, verfügt die Komponentenbibliothek bereits über encodeURIComponent. Und wenn Sie nur Zeichenfolgen verwenden, unternimmt die Komponentenbibliothek nichts, sodass die Sonderzeichen gefiltert werden, wenn sie das Backend erreichen.


Verwendung von encodeURI()


 Diese Methode kodiert weder ASCII-Buchstaben und -Zahlen noch diese ASCII-Satzzeichen: - _ ~ * ' ( ).


 Der Zweck dieser Methode besteht darin, den URI vollständig zu kodieren, sodass die Funktion encodeURI() die folgenden ASCII-Satzzeichen, die im URI eine besondere Bedeutung haben, nicht maskiert: ;/?:@&= $, #


Tipp: Wenn die URI-Komponente Trennzeichen wie ? und # enthält, sollten Sie die Methode encodeURIComponent() verwenden, um jede Komponente separat zu kodieren.


Beispiel:

document.write(encodeURI("http://www.w3school.com.cn")+ "<br />") 
document.write(encodeURI("http://www.w3school.com.cn/My first/")) 
document.write(encodeURI(",/&#63;:@&=+$#")) 
//批注:只转换域名后面的部分,并且对,/&#63;:@&=+$#不处理。 
// http://www.w3school.com.cn 
// http://www.w3school.com.cn/My%20first/ 
// ,/&#63;:@&=+$#  

Nach dem Login kopieren
 Die Funktion decodeURI() kann den von der Funktion encodeURI() codierten URI dekodieren.


 

encodeURIComponent()-Verwendung

 Diese Methode kodiert weder ASCII-Buchstaben und -Zahlen noch diese ASCII-Satzzeichen: - _ ~ * ' ( ).


Andere Zeichen (z. B. :;/?:@&= $,#, bei denen es sich um Satzzeichen zur Trennung von URI-Komponenten handelt) werden durch eine oder mehrere hexadezimale Escape-Sequenzen ersetzt.


Tipp: Bitte beachten Sie, dass sich die Funktion encodeURIComponent() von der Funktion encodeURI() dadurch unterscheidet, dass erstere davon ausgeht, dass ihre Parameter Teil des URI sind (z. B. Protokoll, Hostname, Pfad oder Abfragezeichenfolge). Die Funktion encodeURIComponent() entgeht daher den Satzzeichen, die zum Trennen von Teilen des URI verwendet werden.


Beispiel:

document.write(encodeURIComponent("http://www.w3school.com.cn")) 
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) 
document.write(encodeURIComponent(",/&#63;:@&=+$#")) 
//对比 
// http%3A%2F%2Fwww.w3school.com.cn 
// http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F 
// %2C%2F%3F%3A%40%26%3D%2B%24%23  
Nach dem Login kopieren
 Die Funktion decodeURIComponent() kann den von der Funktion encodeURIComponent() codierten URI dekodieren.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!