In diesem Artikel werden hauptsächlich die Unterschiede zwischen Escape, EncodeURI und EncodeURIComponent vorgestellt
Vorwort
Lassen Sie uns über die Unterschiede zwischen ihnen sprechen Diese drei Methoden Es gibt zu viele Artikel, aber die meisten sind sehr kompliziert. In diesem Artikel wird versucht, diese drei Methoden aus praktischer Sicht zu erklären.
2. Escape und sie gehören nicht zur gleichen Kategorie
Einfach gesagt, Escape codiert eine Zeichenfolge (während die anderen beiden URLs codieren). sie sind auf allen Computern lesbar.
Das Ergebnis nach der Kodierung hat die Form %XX oder %uXXXX.
Davon werden ASCII-Buchstaben, Zahlen und @*/+ nicht kodiert, der Rest jedoch schon.
Das Wichtigste ist, dass Sie diese Methode vergessen, wenn Sie die URL kodieren müssen. Diese Methode wird für Zeichenfolgen verwendet, nicht für URLs.
Tatsächlich habe ich diese Methode in der tatsächlichen Arbeit nicht verwendet, daher werde ich nicht auf Details eingehen.
3. Die am häufigsten verwendeten encodeURI und encodeURIComponent
Es ist üblich, URLs zu kodieren, daher sollte diesen beiden Methoden in der Praxis besondere Aufmerksamkeit geschenkt werden.
Es handelt sich bei beiden um codierte URLs. Der einzige Unterschied besteht im codierten Zeichenbereich. Die
encodeURI-Methode codiert nicht die folgenden Zeichen: ASCII-Buchstaben, Zahlen, ~!@#$&*()=:/,; ?+ '
Die encodeURIComponent-Methode codiert die folgenden Zeichen nicht: ASCII-Buchstaben, Zahlen, ~!*()'
EncodeURIComponent verfügt also über einen größeren Codierungsbereich als encodeURI.
Als praktisches Beispiel kodiert encodeURIComponent http:// in http%3A%2F%2F, encodeURI jedoch nicht.
Das Wichtigste ist, welche Methode ich in welcher Situation anwenden soll.
Lassen Sie uns darüber sprechen Praxisbeispiele.
1. Wenn es sich nur um eine codierte Zeichenfolge handelt und nichts mit der URL zu tun hat, verwenden Sie Escape.
2. Wenn Sie die gesamte URL kodieren und dann diese URL verwenden müssen, verwenden Sie encodeURI.
Zum Beispiel wird
encodeURI("//m.sbmmt.com/season-huang/some other thing");
nach der Kodierung zu
"//www.m.sbmmt.com/season-huang/some%20other%20thing";
, wobei Leerzeichen als %20 kodiert werden. Wenn Sie jedoch encodeURIComponent verwenden, lautet das Ergebnis:
"http%3A%2F%2Fwww.jb51.net%2Fseason-huang%2Fsome%20other%20thing"
Sehen Sie den Unterschied Ja, sogar „/“ wird codiert und die gesamte URL ist nicht mehr verwendbar.
3. Wenn Sie Parameter in der URL kodieren müssen, ist encodeURIComponent der beste Weg.
var param = "//m.sbmmt.com/season-huang/"; //param为参数 param = encodeURIComponent(param); var url = "//m.sbmmt.com?next=" + param; console.log(url) ////m.sbmmt.com?next=http%3A%2F%2Fwww.jb51.net%2Fseason-huang%2F
Ich habe es gesehen, das „/“ im Parameter kann codiert werden. Wenn Sie encodeURI verwenden, wird es definitiv ein Problem geben, da das Folgende / codiert werden muss.
Das Obige ist der gesamte Inhalt dieses Kapitels. Weitere verwandte Tutorials finden Sie unter JavaScript-Video-Tutorial!
Das obige ist der detaillierte Inhalt vonEinfache und klare Unterscheidung zwischen Escape, encodeURI und encodeURIComponent. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!