neontrauma.de » diverse Tutorials » Zeichensätze: ISO, UTF, …

Wenn ihr auf einer Webseite Zeichen darstellt – also Buchstaben, Zahlen und Sonderzeichen – dann könnt ihr bei den sprachspezifischen Sonderzeichen wie etwa den Umlauten ä,ö und ü nicht davon ausgehen, dass jeder Besucher eurer Webseite diese Zeichen auch so dargestellt bekommt. Bei Usern aus anderen Ländern erscheint statt eines ß vielleicht nur ein kryptisches Zeichen.

Der Grund hierfür ist der verwendete Zeichensatz: es gibt fünfzehn verschiedene gebietsspezifische Zeichensätze, die die jeweils benötigten Sonderzeichen beinhalten. Was im Deutschen die Umlaute sind, sind im Französischen etwa die Cédille oder die kyrillischen Schriftzeichen im Russischen. Diese einzelnen Zeichensätze sind in einer ISO-Norm geordnet – für unsere Breitengrade ist dies der sogenannte Latin 1 Westeuropäisch-Zeichensatz, ISO-8859-1.

die ISO 8859

Die anderen Vertreter dieser ISO 8859 seht ihr hier:

  • -1 Latin-1, Westeuropäisch
  • -2 Latin-2, Mitteleuropäisch
  • -3 Latin-3, Südeuropäisch
  • -4 Latin-4, Baltisch
  • -5 Kyrillisch
  • -6 Arabisch
  • -7 Griechisch
  • -8 Hebräisch
  • -9 Latin-5, Türkisch
  • -10 Latin-6, Nordisch
  • -11 Thai
  • -13 Latin-7, Baltisch
  • -14 Latin-8, Keltisch
  • -15 Latin-9, Westeuropäisch
  • -16 Latin-10, Südosteuropäisch

ISO-8859-12 wurde wieder verworfen. ISO-8859-15 stellt eine Überarbeitung des ISO-8859-1er dar und enthält sieben weitere Sonderzeichen.

Jemand aus dem arabischen Sprachraum verwendet also ein anderes Encoding zum Auslesen der so verschlüsselten Zeichen als ein Westeuropäer – und bekommt daher auf einer deutschen Webseite die Zeichen nicht korrekt dargestellt.
Damit so etwas nicht vorkommt und die globale Vernetzung nicht an einem so banalen Problem scheitert, sollte man statt der ISO 8859 einen anderen Zeichensatz verwenden: die Unicode-Kodierung UTF-8.

UTF-8

UTF-8 umfasst sämtliche gebräuchlichen Zeichen und ist daher global im Einsatz.
Hier müsst ihr eure Sonderzeichen auch nicht mehr, wie bisher, durch Enities kodieren. Ihr könnt ganz normal äs, ös und üs tippen. Nichtsdestotrotz versteht UTF-8 aber auch Entities, sodass ihr diese nicht wieder umwandeln müsst, falls ihr bereits Texte kodiert habt.

Es kann allerdings unter Umständen vorkommen, dass eine benötigte Schriftart auf eurem System nicht installiert wurde, etwa zur Darstellung des Arabischen. Hier braucht ihr Unicode-Fonts, also Schriftarten, die all diese Zeichen enthalten. Üblicherweise solltet ihr dazu die Arial Unicode MS verwenden, die mittlerweile unter Windows auch standardmäßig mitgeliefert wird.

Umlaute und Sonderzeichen müssen bei UTF-8-kodierten Seiten, wie gesagt, nicht mehr durch Enitites ersetzt werden, lediglich das & müsst ihr nach wie vor kodieren: &. Empfohlen wird zudem, auch die Anführungszeichen sowie die spitzen Klammern < > in Entities zu notieren, um eventuellen Problemen vorzubeugen.

die Praxis

Damit alles richtig interpretiert wird, solltet ihr einige Einstellungen vornehmen.

1. im Editor

In eurem Editor könnt ihr einstellen, welcher Zeichensatz benutzt werden soll. Am besten stellt ihr ihn, sofern vorhanden, auf UTF-8 mit BOM – hier wird dem Browser durch das BOM (Byte Order Mark) gleich mitgeteilt, welchen Zeichensatz er zu verwenden hat.

2. im Stylesheet

Sofern ihr keinen Editor im UTF-8 mit BOM-Modus nutzt, notiert ihr zu Beginn eures Stylesheets, dass auch das CSS UTF-8 kodiert werden soll:

@charset "utf-8";

3. in der .htaccess

In eurer htaccess, die ihr im Root-Verzeichnis eures Webservers platziert, gebt ihr dem Server Bescheid, dass es sich um UTF-8 handelt:

AddCharset utf-8 .css .html .xhtml

4. in der php.ini

Damit auch PHP-Dateien in UTF-8 kodiert werden, fügt ihr folgende Zeichen in die php.ini ein:

default_mimetype = "text/html"
default_charset = "utf-8"

Wer auf die php.ini keinen Zugriff hat, schreibt in den PHP-Header:

header('content-type: text/html; charset=utf-8');

5. in Formularen

Für den Fall, dass ihr auf eurer Webseite Formulare verwendet – etwa bei Gästebüchern oder Kontaktmailern – müsst ihr dem form-Tag noch ein Attribut hinzufügen, damit auch eure Besucher problemlos sämtliche Zeichen in ihren Eingaben verwenden können:

<form accept-charset="utf-8" method=…

6. im Meta-Tag

Zu guter Letzt müsst ihr nun noch die Meta-Angabe Content-Type im Head-Bereich abändern.
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"
/>

Eine Umstellung auf UTF-8 ist also relativ aufwendig und kann zu Problemen führen, anscheinend etwa bei der Umwandlung des CSS zu UTF-8.

Welche Erfahrungen habt ihr eventuell schon mit UTF-8 kodierten Seiten gemacht?

was es hier sonst noch so gibt...

    4 Kommentare

    1. Hathead meinte dazu am 29. April 2008 um 6:08 pm: antworten
      #1

      Wenn man nicht gerade WordPress benutzt sollte unbedingt darauf geachtet werden, dass die Datenbank auch auf MySql-eingestellt ist. Jede Textbasierte Spalte kann hier einen eigenen Zeichensatz bekommen. Dieser entscheidet bei MySql auch über die Sortierung und darüber ob die Abfragen Case-Sensitiv sind. Vielleicht schreibst Du ja mal was nettes darüber. Ich weiß nicht, wie es in der PHP-Welt aussieht, aber bei Java muss man darüber hinaus noch den Zeichensatz angeben, der für den Verbindungsaufbau erforderlich ist. Wenn man dann versucht mit einer nicht UTF-8 Verbindung UTF-8 Felder zu lesen kommt sonst nur Salat raus.

    2. fabian meinte dazu am 26. Mai 2008 um 5:59 pm: antworten
      #2

      hej. ma ne frage zu dem artikel: und zwar hab ich mich dran gemacht wp zu verwenden. allerdings werden viele sonderzeichen äüö und co mit ner raute und darin en fragezeichen dargestellt: im quelletext (wp gibt das sozusagen ja schon an) steht

      ne idee worans liegen könnte?

    3. fabian meinte dazu am 26. Mai 2008 um 6:02 pm: antworten
      #3

      hmpf. was soll das? ich hab doch sogar das code tag benutzt=(
      also es ist genauso wie der 6. punkt im artikel:

      (mal sehen obs jetzt hinschreibt)

    4. Frederik meinte dazu am 18. April 2009 um 9:42 pm: antworten
      #4

      Danke, das hat geholfen. Der Salat ist verschwunden!

    Und deine Meinung?

    HTML erlaubt

    Abonnieren, ohne einen Kommentar zu hinterlassen

    die Autorin
    neontrauma neontrauma, 23 Jahre alt, Studentin und freiberufliche Webdesignerin, liebt Coding & Fotografie und wohnt in Leverkusen. mehr?
    neontrauma im www
    flickr fotocommunity deviantART twitter facebook StudiVZ lifestream.fm last.fm