Meist nur im Verborgenen, aber doch für jedermann sichtbar hat der Zeichensatz einer Webseite eine ebenso große Bedeutung wie der HTML- und CSS-Code. Die Verwendung des richtigen Zeichensatzes ist für die korrekte Darstellung der Inhalte enorm wichtig. Im Folgenden wird gezeigt worauf man beim Zeichensatz achten muss und welche Lösungen es bei Problemen gibt.
Der Zeichensatz in der IT beschreibt die Kodierung von Zeichen in Maschinensprache. Jeder Zeichensatz beinhaltet einen gewissen Vorrat an Zeichen. Diese Vorräte überlappen sich an einigen Stellen, weshalb manche Zeichen in vielen Zeichensätzen dargestellt werden können, andere hingegen nicht.
Beispiel: Der Buchstabe "A" gehört sowohl zum ASCII als auch zum Unicode-Zeichensatz. Das "»" gehört jedoch nur zum Unicode-Zeichensatz.
Jede Darstellung von lesbaren Text oder Zeichen auf Computersystemen wird über diese Zeichensätze geregelt. Daher haben diese natürlich auch für Webseiten eine enorme Bedeutung. Wird bei diesen der Zeichensatz nicht korrekt angegeben oder verwendet sehen die Besucher nur einen nicht lesbaren Zeichensalat.
Der ASCII-Zeichensatz wird seit 1964 verwendet und ist damit einer der Ältesten. Er enthält 128 Zeichen, die vor allem auf Zeichen aus dem englischen Alphabet aufbauen. Über die ISO 8859 sind 15 verschiedene Zeichenkodierungen festgelegt, welche neben den ursprünglichen 128 noch weitere Zeichen umfassen.
Mit Stand von Frühjahr 2008 enthält der Unicode rund 100.000 Zeichen. Dabei handelt es sich um Zeichen aus verschiedensten Sprachen der Welt. Die Kodierung UTF-8 enthält die meisten dieser Zeichen. Dank UTF-8 können z.B. kyrillische Zeichen korrekt dargestellt werden.
Der Zeichensatz einer Webseite legt fest auf welche Art die von Inhalten der Webseite verwendeten Zeichen dargestellt werden. Die Zeichenkodierung muss dabei mit dem angegebenen Zeichensatz für die Webseite übereinstimmen.
Der Zeichensatz einer Webseite wird über 2 Angaben geregelt:
Ist eine der Angaben nicht verfügbar, wird die jeweils andere vom Browser zur Darstellung genutzt. Ist keine dieser Angaben verfügbar, verwendet der Browser des Besuchers seinen voreingestellte Standard-Zeichensatz (heutzutage meist ISO-8859-1).
Wenn beide Angaben oder nur der Header des Webservers verfügbar sind nutzen moderne Browser die Angabe des Webservers. Die Angabe des Zeichensatzes im HTML-Code sollte aus Rücksicht auf ältere Browser noch eingefügt werden. Für statische HTML-Seiten, die lokal auf einem PC gespeichert und von dort abgerufen werden, sollte der Zeichensatz ebenfalls im HTML-Code angegeben werden.
Beim Apache-Webserver kann der Standard-Zeichensatz über die Eigenschaft AddDefaultCharset festgelegt werden. Zulässige Werte sind z.B. eine ISO-Kodierung wie ISO-8859-1 oder UTF-8. Über den Schalter "Off" kann die Angabe des Zeichensatzes durch den Webserver auch komplett abgeschaltet werden.
Über den folgenden HTML-Code innerhalb des <head>-Bereiches kann ein Zeichensatz für die Webseite festgelegt werden:
In diesem Beispiel wird UTF-8 als Zeichensatz festgelegt.
Die Ausgabe der Inhalte sollte abhängig vom verwendeten Zeichensatz formatiert werden. Hierzu gibt 2 Möglichkeiten:
Für ersteren Fall bietet VIO.Matrix den Codec html an. Dieser formatiert automatisch Umlaute und Sonderzeichen in den jeweiligen HTML-Kodierungen. Beispiel:
Die Ausgabe dieses Beispiels im HTML-Code sieht so aus:
Der Text aus VIO.Matrix-Editoren wie html.dll oder smallhtml.dll werden bereits durch VIO.Matrix entsprechend HTML-kodiert.
Für die Verwendung der UTF-8-Zeichensatzkodierung stellt VIO.Matrix den Codec utf8 zur Verfügung. Ausgaben von Texteingabefeldern können z.B. folgendermaßen formatiert werden:
Inhalte des neuesten VIO.Matrix Editors editor.dll werden bereits UTF-8-kodiert gespeichert. Eine Anpassung dieser Ausgaben ist nicht notwendig. Die Nutzung der editor.dll setzt jedoch gleichzeitig auch ein komplett UTF-8-kodiertes Web voraus!
Die häufigste Ursache für falsch dargestellte Zeichen sind nicht korrekte Angaben im Header der Webseite. Um diesen zu analysieren stehen z.B. für Mozilla Firefox die Erweiterungen WebDeveloper oder LiveHeaders zur Verfügung. Unter Linux kann man über wget sich ebenfalls den Header ausgeben lassen.
Sollte es dann immernoch zu Problemen kommen sollte die Formatierung der auszugebenden Texte geprüft werden.
Zeichensätze wie Windows-1252 sollten aus Gründen der Kompatibilität zu anderen Systemen vermieden werden. Dieser Zeichensatz entspricht zu einem Großteil ISO-8859-1, enthält jedoch an einigen Stellen andere Zeichen was auf einigen Systemen zu falschen Darstellungen führen kann.
Ein weiteres Problem sind oft Texte aus Datenbanken wie MySQL. Bei einer MySQL-Datenbank muss die Kodierung bereits bei Erstellung der Datenbank und der Datenbanktabellen korrekt gesetzt werden. Eine nachträgliche Änderung ist nicht möglich. Bei Nutzung der UTF-8-Kodierung müssen zudem alle Datenbankverbindungen UTF-8-kodiert werden. Dazu stellt MySQL die Kommandos
zur Verfügung. Diese müssen vor jedem MySQL-Statement gesetzt werden.
In den letzten Jahren kristallisierte sich UTF-8 als wichtigste Kodierung für Webseiten heraus. Dank des Unicode-Zeichensatzes ist auch die Darstellung von international weniger weit verbreiteten Zeichen aus verschiedensten Sprachen möglich. Zudem gibt es, wenn man es im gesamten Projekt verwendet, weniger Darstellungsprobleme von Sonderzeichen und man ist zukunftsfähig.
Weiterführende Links: