Heim  >  Artikel  >  Web-Frontend  >  Wie vermeide ich verstümmelte Zeichen in encodeURI(url) in JS?

Wie vermeide ich verstümmelte Zeichen in encodeURI(url) in JS?

php中世界最好的语言
php中世界最好的语言Original
2018-03-09 10:52:422589Durchsuche

Dieses Mal zeige ich Ihnen, wie man URI(URL) in JS ohne verstümmelte Zeichen kodiert? , was sind die Vorsichtsmaßnahmen bei der Verwendung von encodeURI(url) in JS, das Folgende ist ein praktischer Fall, schauen wir uns das an.

Im Allgemeinen senden Sie encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue);
Beim Empfang direkt String paramValue = request.getParameter(paramName); // Der Container automatisch dekodiert.

Wir wissen, dass encodeURIComponent mithilfe der UTF-8-Kodierungsregeln kompiliert wird.
Wenn der Container bei request.getParameter(paramName) auch gemäß UTF-8 dekodiert wird, ist dies korrekt Es ist nicht erforderlich, ein zweites encodeURIComponent(...)

auf dem Client auszuführen

. Wenn der Container request.getParameter(paramName) nicht gemäß UTF-8 dekodiert, gibt es nur ein Ergebnis: Das ist verstümmelter Code!
Die vom Container zum Dekodieren verwendete Kodierung hängt von request.setCharacterEncoding(***) oder der Serverprogrammkonfiguration ab.

Wenn Sie sich in einem JSP-Programm befinden, können Sie request.setCharacterEncoding verwenden („UTF-8“) und die Serverkonfiguration ermöglichen es dem Container, UTF-8 zu verwenden, wenn er die von GET übermittelten Parameter dekodiert.

Der Client muss vor dem Senden nicht zweimal kodieren, sondern nur muss direkt request.getParameter(paramName)

Warum schlagen einige Leute im Internet vor, die -Zeichenfolge auf der Clientseite zweimal zu codieren?
Wenn das Projekt dies benötigt, ist dies nicht möglich Geben Sie an, welche Codierungsregeln der Container zum Decodieren der übermittelten Parameter verwendet, z. B.: Wenn Sie Parameterinhalte von verschiedenen Seiten ohne lokale Codierung empfangen müssen. (Oder vielleicht ist der Entwickler durch diese etwas komplizierte Sache verwirrt und weiß nicht, wie er die Arbeit zum Empfangen von Parametern richtig erledigen soll)
Zu diesem Zeitpunkt kann die sekundäre Codierung von Parametern auf dem Client effektiv sein. Vermeiden Sie das knifflige Problem von „ Festschreiben von Multibyte-Zeichen".
Aufgrund der ersten Kodierung enthält Ihr Parameterinhalt keine Multibyte-Zeichen und wird zu einer reinen ASCII-Zeichenfolge. (Hier heißt das Ergebnis der ersten Kompilierung [STR_ENC1]. [STR_ENC1] enthält keine Multibyte-Zeichen)
Nachdem Sie es erneut kompiliert haben, senden Sie es und der Container löst es beim Empfang einmal automatisch auf (der Container wird Lösen Sie es automatisch auf. Dieses Mal können Sie [STR_ENC1] korrekt erhalten, unabhängig davon, ob Sie GBK, UTF-8 oder ISO-8859-1 drücken.)
Implementieren Sie dann decodeURIComponent erneut im Programm (java.net wird normalerweise verwendet). Java .URLDecoder(***, „UTF-8“)), um den ursprünglichen Wert des Parameters abzurufen, den Sie übermitteln möchten.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie auf der chinesischen PHP-Website Andere verwandte Artikel!

Verwandte Lektüre:

Eine kurze Einführung in das Clearfix-Prinzip in CSS

Gemeinsame Eigenschaften von CSS1 und CSS2

So erstellen Sie mit CSS3 eine Anmeldebox

Das obige ist der detaillierte Inhalt vonWie vermeide ich verstümmelte Zeichen in encodeURI(url) in JS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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