___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123firefox ___ Mozilla Firefox ist ein kostenloser, plattformübergreifender Open-Source-Webbrowser. Verwenden Sie dieses Tag, wenn Ihre Frage mit der Funktionsweise von Firefox im Zusammenhang steht oder sich auf Code bezieht, der nicht mit Firefox funktioniert und in anderen Browsern funktioniert. Fragen zur Firefox-Add-On-Entwicklung sollten mit [firefox-addon] getaggt werden. Wenn Sie in Ihrer Frage Firefox zum Surfen verwenden (z. B. als Endbenutzer), sollten Sie stattdessen Ihre Frage zu Super User stellen. ___ tag123urlencoding ___ URL Encoding ist ein Mechanismus zum Codieren von Informationen in einem Uniform Resource Identifier (URI) unter bestimmten Umständen. ___ tag123encodeuricomponent ___ encodeURIComponent ist eine Kern-JavaScript-Funktion, die Sonderzeichen in Strings entnimmt, so dass sie in URIs als Komponenten von Abfragezeichenfolgen oder Hashes sicher verwendet werden können. ___ answer35370627 ___

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:

Quellcode des encodeURIComponent-Algorithmus

    
___ answer35307197 ___

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?

    
___ qstntxt ___

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:

  • 你好
  • æøåÆØÅäöüïëêîâéíáóúýñ
  • ½§¤
  • £ €
___

8

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

%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 encodeURIcomponent 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̶ ̶̶̶̶̶̶̶̶̶ ̶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:

  • 你好
  • æøåÆØÅäöüïëêîâéíáóúýñ
  • ½§¤
  • £ €
naXa 04.02.2016, 13:39
quelle

2 Antworten

1

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?

    
Eduard Wirch 10.02.2016 05:03
quelle
-1

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:

Quellcode des encodeURIComponent-Algorithmus

    
spozun 12.02.2016 19:22
quelle