Was ist der Unterschied zwischen decodeURIComponent und decodeURI?
Was ist der Unterschied zwischen JavaScript-Funktionen decodeURIComponent
und decodeURI
?
InformationsquelleAutor der Frage Jon Tackabury | 2009-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erklären Sie den Unterschied zwischen diesen zwei lassen Sie mich erklären den Unterschied zwischen encodeURI und alsterrunde.
Der Hauptunterschied ist, dass:
jedes Teil, das sich zwischen Trennzeichen (; /? : @ & = + $ , #).
So, in alsterrunde diese Trennzeichen codiert sind, auch weil Sie als text und keine Sonderzeichen.
Nun wieder der Unterschied zwischen der decode-Funktionen, jede Funktion dekodiert Zeichenketten erzeugt durch den entsprechenden encode Pendant kümmert sich um die Semantik der Sonderzeichen und deren Handhabung.
InformationsquelleAutor der Antwort MahdeTo
alsterrunde/decodeURIComponent() ist fast immer das paar, die Sie verwenden möchten, für das verketten und zu Spalten neben text-strings in der URI-Teile.
encodeURI in einer weniger verbreiteten und irreführenden namens: es sollte wirklich genannt werden fixBrokenURI. Es dauert etwas, das ist fast ein URI, aber hat ungültigen Zeichen wie Leerzeichen, und verwandelt es in eine echte URI. Es hat eine gültige Nutzung bei der Festsetzung ungültige URIs von Benutzereingaben, und es kann auch verwendet werden, um ein IRI-URI (mit bloßen Unicode-Zeichen) in einem nur-URI (mit %-UTF-8-Escape zu Kodieren, die nicht-ASCII -).
decodeURI dekodiert die gleichen Zeichen wie decodeURIComponent außer für ein paar spezielle. Es ist vorgesehen, um eine inverse von encodeURI, aber Sie können noch nicht rechnen, bis Sie wieder die gleichen, wie Sie ursprünglich gesetzt — siehe zB.
decodeURI(encodeURI('%20 '));
.Wo encodeURI sollte wirklich genannt werden fixBrokenURI(), decodeURI() könnte ebenso aufgerufen werden potentiallyBreakMyPreviouslyWorkinguri(). Ich kann mir keinen gültigen Verwendung für Sie überall, vermeiden.
InformationsquelleAutor der Antwort bobince
Sieht aus wie
encodeURI
produziert einen "sicheren" URI-codiert Leerzeichen und einige andere (z.B. nicht druckbare) Zeichen, in der Erwägung, dassalsterrunde
zusätzlich kodiert der Doppelpunkt und der Schrägstrich-und plus-Zeichen, und ist vorgesehen für die Verwendung in query-strings. Die Codierung der + und ? und & ist hier von besonderer Bedeutung, da diese Sonderzeichen im query-strings.InformationsquelleAutor der Antwort Jason S
decodeURIComponent()
unddecodeURI()
sind das Gegenteil der oben genanntenInformationsquelleAutor der Antwort Russ Cam
Hatte ich die gleiche Frage, aber nicht finden die Antwort hier, ich machte einige tests, um herauszufinden, was der Unterschied eigentlich ist.
Ich Tat dies, da ich die Codierung für etwas, was nicht URL/URI verwandt.
encodeURIComponent("A")
gibt "A", ist es nicht Kodieren "A" bis "%41"decodeURIComponent("%41")
gibt "Ein".encodeURI("A")
gibt "A", ist es nicht Kodieren "A" bis "%41"decodeURI("%41")
gibt "Ein".-Das bedeutet, dass sowohl decodieren kann alphanumerische Zeichen, auch wenn Sie nicht Kodieren. Allerdings...
encodeURIComponent("&")
gibt "%26" werden.decodeURIComponent("%26")
kehrt zurück "&".encodeURI("&")
kehrt zurück "&".decodeURI("%26")
gibt "%26" werden.Obwohl alsterrunde nicht codieren werden alle Zeichen, decodeURIComponent Dekodieren kann einen beliebigen Wert zwischen %00 und %7F.
Hinweis: Es scheint, dass, wenn Sie versuchen zu entschlüsseln, ein Wert über %7F (es sei denn, es ist eine unicode-Wert), dann ist dein Skript schlägt fehl mit "URI-Fehler".
InformationsquelleAutor der Antwort
decodeURIComponent wird decode-URI spezielle Marker wie &, ?, #, etc, decodeURI nicht.
InformationsquelleAutor der Antwort Bjorn Tipling
alsterrunde
Nicht Entgangen:
encodeURI()
Nicht Entgangen:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
InformationsquelleAutor der Antwort 顾嘉成