Zeichenkonvertierung
Norbert
- browser
Hallo,
es wird eine Seite an den Browser gesendet, die normalen Text enthaelt.
Im Header steht dazu ausdruecklich:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Trotzdem wandelt der Browser(IE6/SP2) Umlaute und Sonderzeichen in Zweibyte-Zeichen um und zeigt sie auch so an, also aus "Stadtporträt" wird "Stadtporträt" und aus "Économie" wird "Économie".
Wo steckt hier der Wurm drin ...
Gruss und Dank
Norbert
Hell-O!
Im Header steht dazu ausdruecklich:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Das ist der Dokumentenkopf des HTML-Dokuments. Aber was kommt tatsächlich beim Browser an? Servereinstellungen könnten hier zu einem anderen Ergebnis führen. Poste bitte mal einen Link.
Trotzdem wandelt der Browser(IE6/SP2) Umlaute und Sonderzeichen in Zweibyte-Zeichen um
Nur der IE?
Siechfred
Hai,
Poste bitte mal einen Link.
gerne
read.qstr.php, aber ich fuerchte, das hilft Dir nicht, ist unser LAN ... ;-)
Trotzdem wandelt der Browser(IE6/SP2) Umlaute und Sonderzeichen in Zweibyte-Zeichen um
Nur der IE?
nein, der FireFox macht es auch, aber den verwende ich nie!
(Im Konzern sind nur M$-Produkte zugelassen, aber ich habe Narrenfreiheit.)
Unter Zeichencodierung steht auch ordentlich "Westlich (ISO 8859-1)".
Also kommt die Server-Info bei ihm an.
Warum macht er es dann nicht ...
Noch komischer:
Habe den HTML-Output des PHP-Scriptes online gelegt,
Gruss und Dank
Norbert
Habe den HTML-Output des PHP-Scriptes online gelegt
Laut Michael Schröpls HTTP_trace wird überhaupt keine Zeichenkodierung ausgeliefert. Also begibst du dich in die Hände des Browsers, der dann irgendwas draus machen soll. Du solltest via PHP explizit UTF-8 ausliefern *und* die Meataangabe zum Zeichensatz auf "UTF-8" stellen, denn so ist dein Dokument codiert.
- der FireFox behaelt "Westlich (ISO 8859-1)" bei und spinnt unveraendert.
Gehe auf "Ansicht -> Zeichenkodierung -> Unicode (UTF-8)", und alles wird korrekt angezeigt. Ansonsten ist das Verhalten des FF völlig korrekt. Er bekommt keine Zeichensatzangabe via HTTP-Header und orientiert sich deshalb an der Metaangabe, die ISO 8859-1 angibt. Ändere dies so, wie ich es oben schrieb.
- der IE6 aendert die Codierung in UTF-8 und zeigt es ordentlich an.
Er errät es anhand des Inhaltes und ignoriert die Metaangabe. Dieses Verhalten mag man werten, wie man will :-)
Siechfred
Hai Siechfred,
Deine Vermutung stimmte, irgend jemand hat in die zu verarbeitenden Daten einige UTF8-Zeichen eingeschmuggelt und die haben das Chaos ausgeloest. Jetzt decodiere ich alles profilaktisch nach ISO und die Welt ist wieder heile.
In diesem Sinne frohes WE ...
PS:
Default sendet PHP diesen Header mit:
Content-Type: text/html; charset:ISO-8859-1
zusaetzlich steht in dem Dateikopf eine analoge META-Angabe.
Gruss und Dank
Norbert
echo $begrüßung;
es wird eine Seite an den Browser gesendet, die normalen Text enthaelt.
Im Header steht dazu ausdruecklich:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">Trotzdem wandelt der Browser(IE6/SP2) Umlaute und Sonderzeichen in Zweibyte-Zeichen um und zeigt sie auch so an, also aus "Stadtporträt" wird "Stadtporträt" und aus "Économie" wird "Économie".
Der Browser wandelt nichts um. Er nimmt die Zeichensatz-Angabe aus dem HTTP-Header, und nur wenn dort keine enthalten ist, die aus dem von dir zitierten Meta-Element, und interpretiert das Dokument gemäß dieser Zeichensatzangabe. Wenn das Dokument nicht gemäß dieser Angabe kodiert ist, fehlinterpretiert er es, was zu Datenmüll führt.
Du hast vermutlich das Dokument UTF-8-kodiert gespeichert und sagst dem Browser es sei ISO-8859-1. Das Resultat sieht dann so aus wie von dir beschrieben.
echo "$verabschiedung $name";
Du hast vermutlich das Dokument UTF-8-kodiert gespeichert
und sagst dem Browser es sei ISO-8859-1.
hmm,
eigentlich bin ich heute noch nuechtern ...
Speichern tut hier niemand etwas, es ist der Output eines PHP-Scriptes.
Und bevor ich freiwillig UTF-8 verwende, werfe ich den PC aus dem Fenster ... ;-)
Schoenes WE
Norbert
echo $begrüßung;
Du hast vermutlich das Dokument UTF-8-kodiert gespeichert
und sagst dem Browser es sei ISO-8859-1.
hmm,
eigentlich bin ich heute noch nuechtern ...
Aber uneigentlich nicht? :-)
Die von dir angegebene Seite beginnt mit der Zeichenfolge . Das ist die UTF-8-BOM. Sie wird von Editoren wie dem Notepad ungefragt eingefügt, wenn der Text UTF-8-kodiert gespeichert wird, was hier der Fall ist.
echo "$verabschiedung $name";
Die von dir angegebene Seite beginnt mit der Zeichenfolge .
stimmte, leider ...
Aber die Ursache ist schon lange beseitigt - siehe unten.
Gruss Norbert
Hallo Norbert.
Und bevor ich freiwillig UTF-8 verwende, werfe ich den PC aus dem Fenster ... ;-)
Warum?
UTF-8 ist ungemein praktisch und auf lange Sicht sowieso geeigneter als die ISO-*-Kodierungen.
Einen schönen Freitag noch.
Gruß, Ashura