So erkennen Sie, ob eine Zeichenfolge mit escape () oder encodeURIComponent () codiert ist

7

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?

    
Rodrigo 14.08.2009, 03:48
quelle

5 Antworten

6

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.

    
Derek Swingley 14.08.2009, 03:54
quelle
12

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.

%Vor%

Zum Beispiel wird ISO Latin encoded umlaut 'ä' %E4 eine Ausnahme in Firefox auslösen, aber UTF8-codiert 'ä' %C3%A4 wird nicht.

Siehe auch

mika 25.11.2011 10:20
quelle
8

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.

    
Dejan Janjušević 13.05.2015 08:03
quelle
0

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.

    
ZZ Coder 14.08.2009 05:37
quelle
0

Danke für @mika für eine großartige Antwort. Vielleicht wird nur eine Verbesserung seit der Unescape-Funktion als veraltet angesehen:

%Vor%

}

    
Dudi 17.08.2017 10:27
quelle

Tags und Links