Ich habe einen Webservice, der Daten von verschiedenen Clients empfängt. Einige von ihnen senden die mit escape () codierten Daten, während die anderen stattdessen encodeURIComponent () verwenden. Gibt es eine Möglichkeit, die Codierung zu erkennen, die zum Entkommen der Daten verwendet wird?
Ermutigen Sie Ihre Kunden, encodeURIComponent () zu verwenden. Auf dieser Seite finden Sie eine Erklärung: Vergleichen von escape (), encodeURI () und encodeURIComponent () . Wenn Sie wirklich herausfinden möchten, wie genau etwas codiert wurde, können Sie versuchen, nach einigen Zeichen zu suchen, die escape () und encodeURI () nicht verschlüsseln.
Dies wird nicht auf der Serverseite helfen, aber auf der Client-Seite habe ich JavaScript-Ausnahmen verwendet, um festzustellen, ob die URL-Codierung ISO-Latin oder UTF8-Codierung erzeugt hat.
decodeURIComponent
löst eine Ausnahme für ungültige UTF8-Sequenzen aus.
Zum Beispiel wird ISO Latin encoded umlaut 'ä' %E4
eine Ausnahme in Firefox auslösen, aber UTF8-codiert 'ä' %C3%A4
wird nicht.
Ich verstehe, dass dies eine alte Frage ist, aber mir ist keine bessere Lösung bekannt. Also mache ich es so (Danke an einen Kommentar von Robert Pitt oben):
%Vor%Ich habe noch keinen Fall gefunden, in dem dies fehlgeschlagen ist. Was nicht heißt, dass dieser Fall nicht existiert. Vielleicht könnte jemand etwas Licht darauf werfen.
Sie müssen sie nicht unterscheiden. Escape () ist die sogenannte prozentuale Kodierung, es unterscheidet sich nur von der URI-Kodierung in der Art, wie bestimmte Zeichen codiert. Beispielsweise wird Space als% 20 mit Escape, aber als + mit URI-Codierung codiert. Einmal dekodiert, erhalten Sie immer den gleichen Wert.
Tags und Links javascript escaping encoding