UTF8: Mozilla sendet für "ü" "%C3%BC", IE sendet "ü"
Thomas Schenkeli
- browser
Hallo,
ich stelle in einer UTF-8 Applikation per javascript für die Funktion createPopup() einen GET-Request zusammen. Der Firefox (Version 1.5.0.6) sendet ein "ü" auch UTF-8 encoded als "%C3%BC" weiter, der InternetExplorer scheint jedoch die UTF-8 Deklaration zu ignorieren und sendet einfach ein "ü".
Ist das ein bekannter Internet Explorer Bug? Oder ist für den InternetExplorer eine zusätzliche UTF-8 Deklaration notwendig?
Bisher hab ich folgendes getan um UTF-8 zu gatrantieren:
lg Thomas
echo $begrüßung;
ich stelle in einer UTF-8 Applikation per javascript für die Funktion createPopup() einen GET-Request zusammen. Der Firefox (Version 1.5.0.6) sendet ein "ü" auch UTF-8 encoded als "%C3%BC" weiter,
Genauer gesagt ist das eine URL-Kodierung des UTF-8-kodierten ü.
der InternetExplorer scheint jedoch die UTF-8 Deklaration zu ignorieren und sendet einfach ein "ü".
Interessant wäre nun, in welcher Kodierung dieses ü vorliegt. Ist es UTF-8 kodiert, ist ja alles in Ordnung (solange die HTTP-RFC nichts dagegen hat). Wenn möglich schau dir bitte die Bytewerte des ü direkt nach dem Empfang auf dem Server an. Eine Umwandlung in eine Hex-Darstellung sollte die Funktion vornehmen können, die dir dabei helfen kann.
Bisher hab ich folgendes getan um UTF-8 zu gatrantieren:
- XSL-Files beginnen mit <?xml version="1.0" encoding="UTF-8"?>
- XSL-Files enthalten: <xsl:output encoding="UTF-8" [....] />
- XSL-Files enthalten: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> als Teil des HTML-Head-Tags
Die charset-Angabe im Content-Type-Eintrag des HTTP-Headers hat Vorrang vor zumindest 3).
echo "$verabschiedung $name";
ich verwende nun die funktion encodeURIComponent um den entsprechenden Parameter vor dem verschicken zu codieren und es funktioniert Problemlos ...
Auch wenn das nicht das Grundproblem direkt löst so hat es doch zumindest das gewünschte Ergebnis ;-)
lg & danke Thomas
Hi,
Auch wenn das nicht das Grundproblem direkt löst
doch - das löst es.
Umlaute müssen URL-kodiert werden. Der Firefox ist nur so freundlich, Dein Versäumnis nachzuholen, während der IE in diesem Punkt ausnahmsweise mal nicht so fehlertoleranz ist (aber vielleicht akzeptieren Windows-Server ja auch ungültige Anforderungen?;-).
freundliche Grüße
Ingo
Hallo Ingo,
Auch wenn das nicht das Grundproblem direkt löst
doch - das löst es.
Umlaute müssen URL-kodiert werden. Der Firefox ist nur so freundlich, Dein Versäumnis nachzuholen, während der IE in diesem Punkt ausnahmsweise mal nicht so fehlertoleranz ist (aber vielleicht akzeptieren Windows-Server ja auch ungültige Anforderungen?;-).
Das hat nichts mit Windows zu tun. ;-) Auch der Apache unter Linux akzeptiert ungültige Anforderungen:
----------------------- schnipp ------------------------------------
christian@cobalt /var/www/localhost/htdocs $ touch würstchenbude
christian@cobalt /var/www/localhost/htdocs $ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /würstchenbude HTTP/1.1
Host: localhost
Connection: close
HTTP/1.1 200 OK
Date: Sat, 30 Sep 2006 12:19:51 GMT
Server: Apache
Last-Modified: Sat, 30 Sep 2006 12:19:35 GMT
ETag: "374f80-0-c928a3c0"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/plain; charset=ISO-8859-1
Connection closed by foreign host.
----------------------- schnapp ------------------------------------
Ich bin mir auch ziemlich sicher, dass eine ganze Menge an Webseiten nicht mehr funktionieren würde, wären die Webserver nicht so fehlertolerant. :-)
Viele Grüße,
Christian