Haben Sie sich eigentlich auch schon geärgert, weil eine Web-Seite "kryptisch" dargestellt wurde - wie: "Alles ist m?glich"?

Ja, das liegt am "ö" und daran, dass Computer eben aus Amerika stammen (was die "Definitionsmacht" betrifft, jedenfalls) - und - dass man dort keine: "ä, ö, ü und ß" kennt. Dieses Problem soll im vorliegenden Artikel ein wenig beleuchtet und - zumindest - in Teilen gelöst werden.

Wie es zur Zeichencodierung kam:

Der Anfang aller Zeichensätze war ASCII (American Standard Code for Information Interchange). ASCII erlaubt 128 Zeichen, 32 davon sind nicht-visuelle Steuerzeichen (Zeilenumbruch, Wagenrücklauf etc.). So kann man mit ASCII also maximal 96 Zeichen darstellen – für die Anfänge der Informatik, die fast ausschließlich auf die Buchstaben des englischen Alphabets zurückgriff, war das noch ausreichend. Sonderzeichen aus anderen Sprachen, wie die deutschen Umlaute ä, ü, ö und ß, konnten durch HTML Entities dargestellt werden.

Eine HTML Entity beginnt stets mit einer Et-Ligatur (&) und endet mit einem Semikolon (;). Dazwischen befindet sich eine Codierung mit maximal 6 Buchstaben.
Für die Umlaute ä, ü, ö und ß sind die Entities ä, ü, ö und ß zuständig.

Später begann man, Zeichensätze (Code Pages) einzuführen, um auch die Sonderzeichen Westeuropas ohne spezielle Codierung mit HTML Entities zu ermöglichen. Der Zeichensatz für die deutsche Sprache ist ISO8859-1 bzw. ISO8859-15 (mit Euro-Zeichen). Entities können zwar weiterhin benutzt werden, sind aber dadurch nicht mehr zwingend notwendig (so die Theorie).

Leider kann man mit den Zeichensätzen nur sehr begrenzt Zeichen aus verschiedenen Sprachen darstellen. Die gleichzeitige Darstellung von deutschen und französischen Sonderzeichen funktioniert problemlos, aber Deutsch und Hebräisch würden ernsthafte Probleme bereiten.

Die nächste Stufe der "Sonderzeichen-Reform" ist Unicode. Die gängigste Unicode-Kodierung lautet UTF-8. UTF-8 steht für 8-bit Unicode Transformation Format. Mit UTF-8 können bis zu 4 Byte, das heißt 1.114.112 Zeichen dargestellt werden. 1.114.112 Zeichen, um die Zeichen aller Sprachen aufzunehmen und jedem Zeichen eine eindeutige Nummer zu geben. Mit UTF sind HTML-Entitäten also (in der Theorie) überflüssig und verschiedenste Sprachen können in ein und demselben Dokument problemlos dargestellt werden.

Toll - oder? Aber jetzt passiert folgendes: Sie melden alle Ihre Seiten mit utf-8-charsets an und genau dort, wo Sie mit Javascript einige Informationen (zum Beispiel eine Navigation) schreiben "hagelt" es wieder irgendwelche Fragezeichen oder ähnliches.

Was ist zu tun?

Generell ist natürlich eine Codierung nach utf-8 zeitkonform und richtig. Sie können Codierungsanweisungen auf mehrere Arten in Ihre Seiten eintragen:

CSS-Dateien:

Das Thema CSS und UTF ist schnell abgehakt, wir stellen nämlich einfach folgende Zeile an den Anfang der Stylesheets:

@charset "utf-8";

Webserver (Apache) für UTF-8 vorbereiten:

Um den Webserver explizit anzuweisen, dass wir unsere Seiten in UTF ausliefern wollen, fügen wir folgende Zeilen hinzu (.htaccess wäre eine Möglichkeiten):

AddType text/css;charset=utf-8 .css
AddType text/html;charset=utf-8 .html

UTF-8-Kodierung für PHP-Dateien

man ändert den PHP-Header (andere Möglichkeiten werden ausgeschlossen, da die meisten Entwickler keinen direkten Web-Server-Zugriff haben):

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

Eine Möglichkeit, einzelne Dateien zur Auslieferung von utf-8 charsets anzuweisen, besteht in den META-TAGS

Für HTML:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

Die Zeichen ", &, < und > sollten auch bei "funktionierendem" UTF weiterhin als HTML Entities geschrieben werden. Die Entitäten lauten &quot;, &amp;, &lt; und &gt;.

Und dann tauchen doch noch "?" Fragezeichen auf - ja dann, dann helfen eben doch die "guten alten Entities". Deshalb hier zunächst einmal ein Link zu einer umfassenden Tabelle (Entities können auf drei Arten angewiesen werden: als Standard-Entitie: ä = &auml; oder Unicode dezimal: ä = &#228; bzw. Unicode hexadezimal: ä = &#x00E4; ).

Hier finden Sie eine komplette Tabelle, zur händischen Kodierung und auf den Folgeseiten ein Werkzeug, was alles "leichter" macht:

HTML-Entities >>>

Eine umfassende Erklärung zu Zeihensätzen finden Sie hier:

unicode.e-workers.de >>>



Weiter zur nächsten Seite >>>