Bezüglich der chinesischen verstümmelten Zeichen bei der Übertragung eines href-Parameters

Bezüglich der chinesischen verstümmelten Zeichen bei der Übertragung eines href-Parameters

Wenn href zum Übergeben von Parametern benötigt wird und die Parameter auf Chinesisch sind, werden verstümmelte Zeichen angezeigt. Die einfachste Methode ist:

Der übergebene Wert wird zunächst mit escape() verschlüsselt und dann auf der Wertzugriffsseite mit unescape() entschlüsselt. Dies wurde getestet und ist wirksam.

Ich habe online nachgeschaut und herausgefunden, dass man „urlencode“ zum Verschlüsseln und „urldecode“ zum Entschlüsseln verwenden kann.

Ähm... was ist der Unterschied zwischen den beiden? Ich habe es gerade überprüft und geklärt, Quelle (http://www.cnblogs.com/glory-jzx/archive/2013/06/14/3135580.html):

js umfasst 3 Funktionen zum Kodieren von Text : escape, encodeURI, encodeURIComponent und 3 entsprechende Dekodierungsfunktionen: unescape, decodeURI, decodeURIComponent

1. Beim Übergeben von Parametern müssen Sie encodeURIComponent verwenden, damit die kombinierte URL nicht durch Sonderzeichen wie # abgeschnitten wird.
Beispiel: <script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u= +encodeURIComponent("http://cang.baidu.com/bruce42")+">Quit< /a>');</script>

>2. Bei der Umleitung von URLs können Sie encodeURI als Ganzes verwenden
Beispiel: Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3. Escape kann verwendet werden, wenn js Daten verwendet
Beispiel: Verlaufsdatensätze in der Sammlung.

4. Wenn Escape andere Unicode-Werte als 0-255 codiert, erfolgt die Ausgabe im Format %u****. In anderen Fällen sind die Codierungsergebnisse von Escape, encodeURI und encodeURIComponent identisch.

5. Am häufigsten sollte encodeURIComponent verwendet werden , das Sonderzeichen wie Chinesisch und Koreanisch in die URL-Kodierung UTF-8 konvertiert. Wenn Sie also encodeURIComponent verwenden müssen, um Parameter an den Hintergrund zu übergeben, muss die Hintergrunddekodierung UTF-8 unterstützen (die Kodierungsmethode im Formular ist dieselbe wie die Kodierungsmethode der aktuellen Seite).

6. Keine Verschlüsselung:

Es gibt 69 Escape-Zeichen: *, +, -, ., /, @, _, 0-9, az, AZ

Es gibt 82 Zeichen, die nicht in encodeURI codiert sind: !, #, $, &, ', (,), *, +, ,, -, ., /, :, ;, =, ?, @, _, ~, 0-9, az, AZ

encodeURIComponent kodiert 71 Zeichen nicht: !, ', (,), *, -, ., _, ~, 0-9, az, AZ

Was ist der Unterschied zwischen escape() und encodeURI()?

escape()-Methode:
Alle Leerzeichen, Satzzeichen, Akzentzeichen und alle anderen Nicht-ASCII-Zeichen werden als „%XX“ codiert, wobei xx eine Hexadezimalzahl ist.
Die Kodierungs- und Dekodierungsfunktionen escape und unescape, escape gibt eine hexadezimale Kodierung eines ISO-Lateinzeichensatzes zurück. Die unescape-Funktion konvertiert eine hexadezimale Kodierung mit speziellen Werten in eine ASCII-Zeichenfolge
Beispiel:
entkommen('!@#$%^&*(){}[]=:/;?+\'"'):
Ergebnis:%21@%23%24%25%5E%26*%28%29%7B%7D%5B%5D%3D%3A/%3B%3F+%27%22

encodeURI()-Methode
Die Methode Encodeuri gibt eine codierte URI zurück. Wenn Sie daher die Methode Decodeuri auf das Ergebnis anwenden, wird die ursprüngliche Zeichenfolge zurückgegeben. Die Methode Encodeuri codiert die folgenden Zeichen nicht: ", "/", ";", "?". Sie können diese Zeichen jedoch mit der Methode EncodeuriComponent codieren.
kodiert, ersetzt ein Uniform Resource Identifier (URI) (URI) bestimmte Zeichen nacheinander und beschreibt so die Eigenschaften der UTF-8-Kodierung.
Zum Beispiel:
encodeURI('!@#$%^&*(){}[]=:/;?+\'"'):
Ergebnis:!@#$%25%5E&*()%7B%7D%5B%5D=:/;?+'%22

Methode encodeURIComponent():
Die Methode encodeuricomponent gibt eine codierte URI zurück. Wenn Sie also decodeuricomponent aufrufen, wird die ursprüngliche Zeichenfolge zurückgegeben. Da der gesamte Text von der Methode encodeuricomponent codiert wird, seien Sie vorsichtig, wenn die Zeichenfolge Pfade wie „/FOLDER1/FOLDER2/DEFAULT.HTML“ enthält. Die Codierung funktioniert nicht und schlägt fehl, wenn sie als Anforderung an einen Webserver verwendet wird. Verwenden Sie die Methode Encodeuri, wenn die Zeichenfolge aus mehr als einer URI besteht.
Beispiel: Am einfachsten ist es, sich den Code anzusehen, der nach der Verschlüsselung dieser Zeichen generiert wird.
encodeURIComponent('!@#$%^&*(){}[]=:/;?+\'"'):
Ergebnisse!%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%3B%3F%2B'%22

[Wann ist welche Methode sinnvoll?]

Die Methode escape() verschlüsselt nicht + sie wird serverseitig und in Formularfeldern als Leerzeichen interpretiert. Aufgrund dieser Verkürzung sollten Sie diese Methode möglichst vermeiden. Wenn Sie zwischen beiden wählen müssen, verwenden Sie am besten immer encodeURIComponent().

escape() verschlüsselt nicht: @*/+

encodeURI() ist etwas spezialisierter als escape() und wird zum Kodieren von URIs verwendet. URIs sind das Gegenteil einer Abfragezeichenfolge, die Teil einer URL ist. Verwenden Sie diese Methode, wenn Sie eine Zeichenfolge in einen URI-Ressourcenbezeichner konvertieren müssen und bestimmte Zeichen unkodiert bleiben müssen. Denken Sie daran, dass das Zeichen ' nicht kodiert wird, da es in der URI enthalten ist.

encodeURI() wird nicht verschlüsselt: !@#$&*()=:/;?+'

Schließlich wird die Methode encodeURIComponent() in den meisten Fällen verwendet, wenn Sie eine einzelne URI-Komponente kodieren müssen. Diese Methode kann bestimmte Zeichen kodieren, die für URIs spezifisch sind, sodass die meisten Komponenten eingeschlossen werden können. Denken Sie daran, dass das Zeichen ' selbst in URIs enthalten ist, sodass diese Methode es nicht kodiert.

encodeURIComponent() verschlüsselt nicht: !*()'
http://shijian0306.javaeye.com/blog/241264

Ich habe nur Escape verwendet, dies dient also nur als Referenz.

Der obige Artikel über das Problem des verstümmelten chinesischen Codes bei der Übergabe eines href-Parameters ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Original-URL: http://www.cnblogs.com/zhangym118/archive/2016/07/05/5644915.html

<<:  Das Balkendiagramm von Vue + Echart realisiert Statistiken zu Epidemiedaten

>>:  HTML imitiert die Dropdown-Menüfunktion der Baidu-Enzyklopädienavigation

Artikel empfehlen

Detaillierte Erläuterung des Vue Router Routing Guard

Inhaltsverzeichnis 1. Global vor jedem 1. Global ...

Javascript-Baummenü (11 Elemente)

1. dhtmlxBaum dHTMLxTree ist ein Tree-Menu-Steuer...

React + ts realisiert den sekundären Verknüpfungseffekt

In diesem Artikel wird der spezifische Code von R...

Docker-Netzwerkmodus und Konfigurationsmethode

1. Docker-Netzwerkmodus Wenn Docker Run einen Doc...

So erstellen Sie https mit Nginx und dem kostenlosen Tencent Cloud-Zertifikat

Ich habe gelernt, wie man https bekommt. Kürzlich...

Verstehen Sie die Verwendung des All-Attributs von CSS3

1. Kompatibilität Wie unten dargestellt: Die Komp...

Ein einfaches Beispiel für die Verwendung von Vue3-Routing VueRouter4

Routenplanung vue-router4 behält den Großteil der...

So installieren Sie MySQL unter Linux (Yum und Quellcode-Kompilierung)

Es gibt zwei Möglichkeiten, MySQL unter Linux zu ...