Moin!
Was heißt eine Seite ist im Unicode Format?
Das ist eine gute Frage. Hängt wohl davon ab, was der, der diese Aussage traf, damit meinen wollte. :)
Ich dachte immer, dass man folgende Zeichansatzgabe macht:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Diese Zeichensatzangabe bezeichnet die Art der Codierung.
HTML und XHTML haben als Zeichensatz (d.h. als Menge aller möglichen auftauchenden Zeichen) immer Unicode.
Die spannende Frage ist: Wie sage ich dem Browser, dass er beispielsweise ein "A", ein "ö" oder ein "" darstellen soll?
Und da kommt die ZeichenCODIERUNG ins Spiel.
Es gibt ASCII. Das ist eine der ältesten Codierungen, und sie hatte damals noch absolut nichts mit Unicode und nicht-englischen Sonderzeichen (Umlauten etc.) im Sinn. In ASCII ist definiert: Das große "A" kriegt den Bytewert "65 (dezimal)".
Unicode hat die 127 ASCII-Zeichen mit ihren Bytewerten übernommen, und nahezu alle anderen auf dieser Welt existierenden Schriftzeichen dahinter einsortiert.
Die Zeichencodierung regelt nun, mit welchem Bytewert man dem Programm (hier: dem Browser) sagt, dass er ein "ö" oder ein "" darstellen soll.
ISO-8859-1 ist eine Methode. Hier werden ausschließlich 8-Bit-Werte verwendet, was die Anzahl der möglichen unterschiedlichen Zeichen auf 256 begrenzt. Tatsächlich werden viele Bytewerte nicht für sichtbare Zeichen genutzt, so dass unter dem Strich alle in Westeuropa gebräuchlichen Sonderzeichen des Alphabets definiert sind. Das bedeutet: Man kann eine Webseite mit ISO-8859-1-Codierung auch ohne die Entities "ä" etc. schreiben, der Browser wird es (wenn er nicht komplett blöde ist oder verwirrt wird) verstehen und (wenn die Schriftart die Sonderzeichen alle kennt) korrekt darstellen.
Allerdings kann man, wenn man ISO-8859-1 verwendet, das Eurozeichen "" nicht eingeben, weil dieses Zeichen in dem Codierungsschema gar nicht enthalten ist! Wenn man das will, muß man auf ISO-8859-15 umsteigen, denn dort ist das Eurozeichen drin - und am Rest der Zeichendefinition ändert sich nichts.
Will man aber gleichzeitig englisch, deutsch, russisch, japanisch und chinesisch auf einer Webseite haben, reicht ISO-8859-1 (oder -15) nicht aus. Man hat dann zwei Optionen:
1. Wenn die Zeichenmengen für russisch, japanisch und chinesisch gering sind, kann man sich mit "numerischen Entities" behelfen. Diese Entities bezeichnen den Zahlenwert, der im Unicode-Standard dem gewünschten Zeichen zugeordnet ist, wahlweise dezimal oder hexadezimal. Auf diese Weise kann man beispielsweise immer das Euro-Zeichen anzeigen lassen, indem man &x20AC; oder &8364; eingibt. Das Euro-Zeichen ist in http://www.unicode.org/charts/PDF/U20A0.pdf definiert. AUf dieselbe Weise kann man die russischen, japanischen und chinesischen Schriftzeichen einbinden. Diese Methode arbeitet in jedem Editor, da sie ja selbst keinerlei besondere Schriftzeichen verwendet, sondern nur das &-Zeichen, Zahlen, Semikolon, und ggf. das "x".
2. Man kann den Text aber auch direkt als russische/japanische/chinesische Schriftzeichen eingeben, und sie in einer Unicode-Codierung abspeichern. UTF-8 ist eine ganz brauchbare Codierungsform, weil bei ihr darauf geachtet wurde, kompatibel zu ASCII zu bleiben. Alle Zeichen bis zum Bytewert 127 sind in UTF-8 identisch mit ASCII. Da HTML-Tags, CSS und Javascript nur aus ASCII-Zeichen bestehen, bleiben diese Elemente immer lesbar.
Einzig die Sonderzeichen ändern sich. Deutsche Umlaute erscheinen üblicherweise als "zwei seltsame Zeichen". Das ist die UTF-8-Codierung, denn alle Zeichen, deren Wert in Unicode über 127 liegt, werden in zwei oder noch mehr Bytewerten codiert.
Die bei uns gebräuchlichen Sonderzeichen sind in http://www.unicode.org/charts/PDF/U0080.pdf mit ihren hexadezimalen Unicode-Werten aufgeführt. Dieser Wert wird für UTF-8 nach bestimmten Regeln in mehrere Bytewerte aufgespalten, die für sich genommen immer noch druckbare Zeichen sind, auch wenn man nur ASCII oder ISO-8859-1 hat. Aber sie sehen halt etwas "wild" aus.
und dann sämtlicher Text im Quelltext einer html Seite nur hexwerte enthält.
Z.B. ऑ etc
Wie ich erklärt habe, kannst du diese "Hexwerte" (dein Beispiel ist übrigens KEIN Hex-Wert, sondern ein Dezimalwert) jederzeit und vollkommen unabhängig von deinem Zeichensatz verwenden. Auf diese Weise kriegst du beispielsweise relativ sicher das Euro-Zeichen hin. Aber auch deutsche Umlaute sollten gehen. Laut der oben verlinkten Tabelle hat das "ö" den Wert "00F6". Du kannst also überall ein "ö" durch &xF6; einfügen. Wahlweise auch statt hexadezimal F6 die dezimale 246 nehmen: &246;. Wenn du ISO-8859-1 als Codierung hast, kannst du das "ö" auch direkt eintippen, und wenn du auf Nummer sicher gehen, aber auch direkt sehen willst, welches Zeichen du da getippt hast, nimmst du die Entity "ö".
Was versucht uns der Autor dann mit folgender Unicode Seite mitzuteilen?
http://yudit.org/cgi-bin/test.cgi
Diese Seite ist mit der Codierung UTF-8 ausgeliefert worden. Wenn du sie in einem UTF-8-unfähigen Texteditor im Quelltext anschaust und den deutschen Text betrachtest, werden dir die Umlaute auffallen. Diese sind (leider ist nur ein "ä" drin) immer in der Form "großes A-Tilde und ein seltsames Zeichen dahinter". Dieses große "Ã" anstatt der Umlaute ist das markante Zeichen für "UTF-8 ist am Werk".
Die Seite kann ich auf meinem Rechner, gerade alle möglichen Zeichensätze unter Win 2000 installiert habe. Aber was hat da mit Unicode zu tun.
Mein Opera zeigt mir nicht alle Schriftzeichen komplett an, etliche werden nur als rechteckige Kästen angezeigt - ein Zeichen für "dieses Schriftzeichen ist in der gewählten Schriftart nicht definiert". Aber grundsätzlich funktioniert es bei mir.
- Sven Rautenberg