URL Maskierte chinesische / japanische Unicode-Zeichen für Internet Explorer

8

Ich versuche URL-Escape-Zeichen (Prozent-Encodierung) von nicht-ASCII-Zeichen in mehreren URLs, mit denen ich es zu tun habe. Ich arbeite mit einer Flash-Anwendung, die Ressourcen wie Bilder und Soundclips von diesen URLs lädt. Da die Dateinamen nicht-ASCII-Zeichen enthalten können: %Code% Ich entkomme ihnen durch utf-8 Codierung der Zeichen, und dann Prozent-Entkommen der Unicode-Bytes, um Folgendes zu erhalten:

日本語.jpg

Diese Dateinamen funktionieren gut, wenn ich die App in einem anderen Browser als dem Internet Explorer ausführe - ich habe Firefox, Safari und Chrome ausprobiert. Aber wenn ich die App in IE starte (versucht 6 und 8) und es versucht, den Soundclip zu laden, bekomme ich: %E6%97%A5%E6%9C%AC%E8%AA%9E.jpg , und die URL wurde zu etwas wie:

beschädigt

Error #2044: Unhandled ioError

Irgendwelche Gedanken, wie Sie das beheben können? Dies ist nur ein Test für die Flash-App mit lokalen Dateisystem-URLs. Ich habe auch bemerkt, dass der Internet Explorer keine Datei wie folgt finden kann: æ¥æ¬èª.jpg , obwohl Chrome / Firefox es entschlüsseln und für eine Datei mit dem Pfad

problemlos laden kann

file:///C:/%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg

Bearbeiten

Ich denke, mein Problem ist das gleiche wie das im folgenden ActionScript-Codefragment:

%Vor%

Die Verwendung der Zeichenfolge C:\日本語.jpg funktioniert im IE, während die Verwendung der Zeichenfolge 日本語.jpg in anderen Browsern funktioniert. Was ich brauche, ist ein einzelnes Formular, das in allen Browsern funktioniert. Ich habe versucht, die %E6%97%A5%E6%9C%AC%E8%AA%9E.jpg Codierung und die HTTP-Anfrage-Header auf %u ohne Glück in entweder Prozent-Escape oder Unescaped-Formular.

    
Bear 25.11.2009, 04:29
quelle

6 Antworten

1

Tut mir leid, keine Lösung, aber vielleicht ein paar mehr Informationen darüber, was hier vor sich geht. (Wahrscheinlich haben Sie schon so viel herausgefunden, aber vielleicht hilft es einem anderen Leser, eine Lösung zu finden.) Die "offizielle" URL-Kodierungsspezifikation scheint die Tür weit offen zu lassen, wie entgangene URLs wie die, die Sie erzeugen, entschlüsselt werden - Sind die Escape-Entities UTF-8-Zeichen (wie Firefox usw. interpretiert) oder ASCII-Zeichen (wie IE sie interpretiert) darzustellen? Ich kenne keine Möglichkeit, die beabsichtigte Entschlüsselungsstrategie zu erzwingen.

Nur eine Frage: was Schlimmes passiert, wenn Sie ihnen überhaupt nicht entkommen, aber den Unicode in der URL lassen? Obwohl ich nicht viel Erfahrung damit habe, dachte ich, ich erinnere mich, irgendwo gelesen zu haben, dass die Tage, in denen wir Unicode in URLs entkommen mussten, hinter uns liegen. Da könnte man falsch liegen ...

    
Dave Mateer 25.11.2009 13:53
quelle
1

IE verwendet UTF-8 für HTTP-URLs, aber ich bin mir nicht sicher über Datei-URLs (obwohl ich das Verhalten vor etwa 10 Jahren als Teil des IE-Teams getestet habe). Wenn Sie die URLs in HTML verwenden, empfehle ich String-Literale (wenn Ihre Seitencodierung UTF-8 ist) oder numerische Zeichenreferenzen (& amp; #dddd;). IE konvertiert die Zeichen im Allgemeinen in eine geeignete Kodierung, die UTF-8 für das HTTP-Zeug und UTF-16 für lokale Dateisystem-Interaktionen wäre.

Es ist eigentlich HTTP, das den URL-Escaping benötigt, nicht den HTML-Parser.

    
JasonTrue 27.11.2009 21:35
quelle
1

Versuchen Sie, nur die Teile des URIs zu codieren, die zu einer falschen Syntaxanalyse führen würden. Zum Beispiel kodieren & amp;, & bull; und Leerzeichen. Lass alles andere wie es ist, und es sollte wie ein Zauber wirken.

Wenn Sie immer noch auf Probleme stoßen, müssen Sie möglicherweise den Inhaltstyp in Ihren http-Headern auf utf setzen. So etwas wie Inhaltstyp: text / html; charset = UTF-8.

    
Bear 29.11.2009 06:51
quelle
1

Warum nicht einfach Unicode-Escape-Sequenzen verwenden? Fügen Sie das in den Körper einer HTML-Webseite ein, um zu sehen, was ich meine:

%Vor%

Ich bekomme% u65E5% u672C% u8A9E.jpg.

    
Ishmael 30.11.2009 21:23
quelle
1

Nach dem, was ich getestet habe, ist mir aufgefallen, dass IE keine verschlüsselten Datei-URLs behandelt, aber es behandelt normale http-URLs, daher könnte das Problem sein. Ich bin mir nicht sicher, wie Sie sie laden, aber Sie sollten dieses Problem überprüfen.

    
Malcolm Lim 02.12.2009 10:00
quelle
1

file: // Das Protokoll hängt von den Einstellungen Ihrer Betriebssystemregion ab. Wenn Ihre Systemeinstellungen nicht auf Chinesisch, sondern auf Englisch eingestellt sind, können Sie dies nicht tun.

    
C.C. 07.12.2009 02:19
quelle