Hauptmenü

Untermenü

PHP/MySQL - Header - Charset

1. Die Abschnitte

2. Ein Hinweis

Da die Geschichte mit der Zeichenkodierung ein wenig kompliziert ist, habe ich dazu ein ausführliches Tutorial verfasst, wo ich auf die wichtigsten Dinge eingehe. Das solltet ihr euch auf jeden Fall zur Brust nehmen. Und darum sollte man hier besonders(!) auf die Angaben zum Zeichensatz achten.

Bei allen Formaten

... wird als Standardkodierung US-ASCII genommen. Und genau so wie deren entfernte Verwandte gleicher Zunge in Großbritannien kennen die keine Sonderzeichen wie zum Beispiel das Deutsche oder das Französische.

3. Der Code

... ist ziemlich pisselig, enthält aber zwei Wörter mit deutschen Umlauten. Dabei habe ich die ersten beiden genommen, die mir einfielen. Aber bitte deswegen keine Rückschlüsse auf meine Psyche ziehen. Die Datei dazu findet ihr im Ordner charset und nennt sich iso.php.


<?php
  header('Content-Type: text/xml');
  echo '<info>
          <bla>Überzeugung</bla>
          <blubb>Triebtäter</blubb>
        </info>';
?>

Wenn ihr die jetzt im Browser aufruft (bitte noch nicht hineinschauen!), so seht ihr anstelle der Umlaute nur eine Fehlermeldung. Wie ich eingangs schon sagte, liegt das an der Standard-Kodierung von XML-Formaten. Deshalb gibt man nun das gültige ISO-8859-1 an. Die Angabe selber erfolgt direkt im Content-Type:


<?php
  header('Content-Type: text/xml; charset=ISO-8859-1');
  ...
?>

So, jetzt dürft ihr euch die Datei im Editor anschauen und entsprechend anpassen. Und anschließend natürlich auch testen.

4. UTF-8

Hier ist die Sache noch ein wenig komplizierter. Denn es muss nicht nur der korrekte Charset angegeben werden, nein, selbst die verarbeitende Datei muss als UTF-8 abgespeichert sein. Ruft dazu mal die Datei utf-8.php im schon erwähnten Ordner charset mit eurem Browser auf. Dort haut es euch dann wieder eine Fehlermeldung um die Ohren. Und warum? Der Code scheint doch in Ordnung zu sein.


<?php
  header('Content-Type: text/xml; charset=UTF-8');
  echo '<info>
          <bla>Überzeugung</bla>
          <blubb>Triebtäter</blubb>
        </info>';
?>

Nun der Code selber ist einwandfrei, aber das Format der PHP-Datei nicht! Die wurde nämlich als ANSI abgespeichert. Also öffnet sie mal im Editor eurer Wahl und wandelt sie in UTF-8 um. Dabei dürft ihr aber nicht das schon erwähnte BOM-Problem vergessen! Wenn ihr sie anschließend noch mal im Browser aufruft, ist alles wieder feini, feini. Es sei denn ihr habt Mist gemacht.

Exotenschriften

Dieses Problem könnt ihr wunderbar an der Datei utf-8_ru.php erkennen. Öffnet sie mal mit eurem Editor und ihr seht dort kyrillische Schriftzeichen. Es sei denn der Editor ist totaler Müll oder falsch eingestellt. Wenn jetzt von euch jemand auf die Idee kommt, diese Datei in ANSI zu konvertieren, so sieht das Ergebnis dann so aus:


<?php
  header('Content-Type: text/xml; charset=UTF-8');
  echo '<info>
          <bla>???????? ?????</bla>
          <blubb>??????? ? ???????????</blubb>
        </info>';
?>

Und leider kann man das auch nicht mehr rückgängig machen. Darum Obacht bei UFT-8-Kodierungen und -Dateien! Verstanden?

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt