encodeURIComponent () ist eine native Funktion, daher verwendet Firefox offensichtlich verschiedene Implementierungen unter den Covern.
Wenn Sie stecken bleiben, dann liefern Sie einfach Ihre eigene Javascript-Implementierung von encodeURIComponent (), dann erhalten Sie die gleichen Ergebnisse in allen Browsern. Hier ist ein Link, wie man eine Open-Source-Kopie davon bekommt:
Ich nehme an, Ihr Problem ist nicht die Methode encodeURIComponent (). Es ist die Kodierung der Konstrukte %code% . Erweitere deine Frage. Wie wird %code% initialisiert? Woher kommen die Zeichen?
Ich kodiere einen Dateinamen und sende ihn als Teil einer URL wie %code% . In JS Link-Konstruktion ist so einfach wie
%Vor%Es funktioniert gut für einfache Fälle, aber für Hardcore-Tests verwende ich eine Datei mit dem Namen
%Vor%Nach der URI-Codierung erwarte ich einen Link
%Vor%Und ich verstehe es. Der konstruierte Link funktioniert in den neuesten Versionen von IE und Chrome einwandfrei, schlägt aber in Firefox fehl. Nach einigen Untersuchungen habe ich festgestellt, dass in Firefox %code% anders funktioniert. Hier ist das tatsächliche Ergebnis in Firefox:
%Vor%Visual Vergleich (Chrome Link ist auf der linken Seite und Firefox Link ist auf der rechten Seite):
Ich habe auch versucht, den gültigen Link (in Chrome erstellt) in Firefox zu kopieren und einzufügen, und es funktioniert einwandfrei.
Warum bekomme ich unterschiedliche Ergebnisse?
I̶s̶ ̶i̶t̶ ̶a̶ ̶b̶u̶g̶ ̶̶̶̶̶̶̶̶̶ %code% ̶ ̶i̶n̶ ̶F̶i̶r̶e̶f̶o̶x̶? ̶
Verwendet Firefox eine andere Kodierung in %code% ?
UPD. Ich habe ähnliche Fragen gefunden ( encodeURIComponent verhält sich in den Browsern für China anders als location [搜索] und encodeURIComponent Unterschied mit Browsern und ä-ö-å Zeichen [äöå]), beide ohne Antwort.
UPD.2 Weitere Untersuchungen haben ergeben, dass die folgenden Zeichen unterschiedlich codiert sind und die Ausnahme 'Datei nicht gefunden' auf dem Server verursachen:
Ich kodiere einen Dateinamen und sende ihn als Teil einer URL wie /rest/get?name=Filename.txt
. In JS Link-Konstruktion ist so einfach wie
Es funktioniert gut für einfache Fälle, aber für Hardcore-Tests verwende ich eine Datei mit dem Namen
%Vor%Nach der URI-Codierung erwarte ich einen Link
%Vor% Und ich verstehe es. Der konstruierte Link funktioniert in den neuesten Versionen von IE und Chrome einwandfrei, schlägt aber in Firefox fehl. Nach einigen Untersuchungen habe ich festgestellt, dass in Firefox encodeURIcomponent
anders funktioniert. Hier ist das tatsächliche Ergebnis in Firefox:
Visual Vergleich (Chrome Link ist auf der linken Seite und Firefox Link ist auf der rechten Seite):
Ich habe auch versucht, den gültigen Link (in Chrome erstellt) in Firefox zu kopieren und einzufügen, und es funktioniert einwandfrei.
Warum bekomme ich unterschiedliche Ergebnisse?
I̶s̶ ̶i̶t̶ ̶a̶ ̶b̶u̶g̶ ̶̶̶̶̶̶̶̶̶ ̶e̶n̶c̶o̶d̶e̶U̶R̶I̶c̶o̶m̶p̶o̶n̶e̶n̶t̶(̶)̶
̶ ̶i̶n̶ ̶F̶i̶r̶e̶f̶o̶x̶? ̶
Verwendet Firefox eine andere Kodierung in encodeURIComponent()
?
UPD. Ich habe ähnliche Fragen gefunden ( encodeURIComponent verhält sich in den Browsern für China anders als location [搜索] und encodeURIComponent Unterschied mit Browsern und ä-ö-å Zeichen [äöå]), beide ohne Antwort.
UPD.2 Weitere Untersuchungen haben ergeben, dass die folgenden Zeichen unterschiedlich codiert sind und die Ausnahme 'Datei nicht gefunden' auf dem Server verursachen:
Ich nehme an, Ihr Problem ist nicht die Methode encodeURIComponent (). Es ist die Kodierung der Konstrukte file.name
. Erweitere deine Frage. Wie wird file.name
initialisiert? Woher kommen die Zeichen?
encodeURIComponent () ist eine native Funktion, daher verwendet Firefox offensichtlich verschiedene Implementierungen unter den Covern.
Wenn Sie stecken bleiben, dann liefern Sie einfach Ihre eigene Javascript-Implementierung von encodeURIComponent (), dann erhalten Sie die gleichen Ergebnisse in allen Browsern. Hier ist ein Link, wie man eine Open-Source-Kopie davon bekommt:
Tags und Links javascript url-encoding firefox encodeuricomponent