Accesskey n springt zur Seitennavigation. Springe zum Inhalt.
Dieses Dokument ist eine Übersetzung. Im Falle von Abweichungen oder Fehlern sollte das aktuelle englische Original als maßgeblich angenommen werden. Das W3C besitzt das Copyright am Original, wie unten beschrieben.
Übersetzer: Gunnar Bittersmann
Zielgruppe: XHTML/HTML-Autoren (die Web-Editoren/Texteditoren oder Scripte benutzen), Script-Entwickler (PHP, JSP u.a.) und alle, die Rat suchen, wie und wann Alternativen zu den Zeichen in einem Dokument zu verwenden sind.
Was sind Zeichen-Entity-Referenzen und numerische Zeichenreferenzen für Escapes; und wann sind sie zu verwenden?
Jedes Unicode-Zeichen lässt sich in XML oder (X)HTML durch ein Zeichen-Escape darstellen; in diesem kommen dann ausschließlich ASCII-Zeichen vor. Numerische Zeichenreferenzen und Zeichen-Entity-Referenzen sind Arten von Zeichen-Escapes. Das geschützte Leerzeichen (U+00A0 NO-BREAK SPACE) bspw. lässt sich folgendermaßen repräsentieren:
 <p>Vive la France !</p> <p>Vive la France !</p> Á den Großbuchstaben Á, á hingegen den Kleinbuchstaben á.
<p>Vive la France !</p>Ein wichtiger Punkt ist, dass die Werte von numerischen Zeichenreferenzen (wie € oder € für das Euro-Zeichen €) als Zeichencode von Unicode-Zeichen interpretiert werden – unabhängig von der Zeichencodierung des Dokuments. Es ist ein häufiger Fehler, wenn Autoren in Windows-1252-codierten Texten das Euro-Zeichen als € notieren. Zwar liegt das Euro-Zeichen in der Windows-1252-Codepage auf Position 80 (hexadezimal); aber € sollte ein Steuerzeichen ergeben, denn das Escape wird aufgelöst zu dem Zeichen auf Position 80 (hexadezimal) im Unicode-Repertoire. (Allerdings korrigieren manche Browser diesen Fehler stillschweigend. Siehe diese Testseiten.)
Es ist fast immer besser, eine Zeichencodierung zu benutzen, die es erlaubt, die Zeichen in ihrer normalen Form zu verwenden, anstatt Zeichen-Entity-Referenzen oder numerische Zeichenreferenzen zu verwenden.
Die Verwendung von Escapes macht den Quelltext schlechter lesbar und schwerer zu pflegen und kann auch die Dateigröße beträchtlich erhöhen.
Viele englischsprachige Entwickler gehen davon aus, dass andere Sprachen nur gelegentlich Nicht-ASCII-Zeichen verwenden, aber dem ist nicht so.
Nehmen wir als Beispiel folgende Passage auf Tschechisch:
Jako efektivnější se nám jeví pořádání tzv. Road Show prostřednictvím našich autorizovaných dealerů v Čechách a na Moravě, které proběhnou v průběhu září a října.
Wenn für alle Nicht-ASCII-Zeichen numerische Zeichenreferenzen verwendet werden, wird die Passage unlesbar, schwierig zu pflegen und deutlich länger. Es wäre natürlich noch schlimmer bei einer Sprache, die überhaupt keine lateinischen Buchstaben verwendet.
Jako efektivnĕjší se nám jeví pořádání tzv. Road Show prostřednictvím našich autorizovaných dealerů v Čechách a na Moravě, které proběhnou v průběhu září a října.
Verwendung in XML. Die Verwendung von Zeichen-Entity-Referenzen in XML wird problematisch, wenn die Entities extern (nicht im Dokument selbst) definiert werden und die XML-Prozessoren die externen Dateien nicht lesen. Dann werden die Entity-Referenzen nicht durch die entsprechenden Zeichen ersetzt. Wenn wirklich Escapes benötigt werden, ist es deshalb sicherer, numerische Referenzen zu verwenden oder die benötigten Entities im Dokument selbst zu definieren. Wenn in HTML-definierte Zeichen-Entity-Referenzen (wie á) verwendet werden, um Zeichen in XHTML zu repräsentieren, ist Vorsicht geboten, wenn der Inhalt von XML-Werkzeugen verarbeitet wird oder in XML transformiert wird.
Syntax-Sonderzeichen. Es gibt 3 Zeichen, die im Inhalt immer als Escapes auftreten sollten, damit sie nicht die Syntax der Auszeichnungssprache beeinflussen. Diese sind Sprachbestandteile von XML bzw. HTML:
< (<)
> (>)
& (&)
Auch sollte das doppelte Anführungszeichen (") durch " und das einfache Anführungszeichen (') durch ' repräsentiert werden – besonders in Attributwerten, wenn dasselbe Anführungszeichen, das den Attributwert umgibt, auch in diesem vorkommt. Zu beachten ist dabei jedoch, dass ' zwar in XML definiert ist, nicht aber in HTML. Aus diesem Grund empfiehlt die XHTML-Spezifikation [im Anhang C.16], stattdessen ' zu verwenden, wenn der Text an ein Nutzerprogramm (Browser) geschickt wird, der diesen als HTML verarbeitet.
Lücken der Zeichencodierung. Escapes können nützlich sein, um Zeichen zu repräsentieren, die von der für das Dokument gewählten Zeichencodierung nicht unterstützt werden, z.B. um chinesische Zeichen in einem ISO-8859-1-codierten Dokument zu repräsentieren. Man sollte sich zunächst aber fragen, warum man nicht die Zeichencodierung ändert und eine verwendet, die alle im Dokument vorkommenden Zeichen abdeckt (wie UTF-8).
Probleme bei der Eingabe. Wenn es der Web-Editor bzw. Texteditor nicht ermöglicht, benötigte Zeichen auf einfache Weise einzugeben, kann man auch auf Escapes ausweichen. Dies stellt jedoch keine Langzeitlösung dar und ist auch umständlich, wenn viele Zeichen auf diese Art eingegeben werden müssen – es braucht mehr Zeit und macht die Pflege schwieriger. Besser ist die Verwendung eines Editors, der die Eingabe dieser Zeichen als Zeichen ermöglicht. Wenn nur gelegentlich ein solches Zeichen benötigt wird, kann als Alternative auch eine Zeichentabelle oder ein Zeichenwähler benutzt werden.
Unsichtbare oder nicht unterscheidbare Zeichen. Eine besonders nützliche Rolle spielen Escapes für die Repräsentation von Zeichen, die in der Darstellung nicht sichtbar oder nicht unterscheidbar sind.
Ein Beispiel dafür wäre das Unicode-Zeichen 200F: RIGHT-TO-LEFT MARK. Dieses Zeichen kann verwendet werden, um die Schreibrichtung in bidirektionalem Text anzugeben (wenn auch arabische oder hebräische Schrift vorkommt). Es wird nicht grafisch dargestellt, wodurch schwierig zu erkennen ist, wo solche Zeichen im Text vorhanden sind; und wenn sie fehlen oder verloren gehen, kann das zu unerwarteten Ergebnissen bei der späteren Bearbeitung des Textes führen. Bei der Verwendung von ‏ (oder der entsprechenden numerischen Referenz ‏) hingegen ist es leicht, diese Zeichen zu erkennen.
Ein Beispiel für ein nicht unterscheidbares Zeichen ist das geschützte Leerzeichen 00A0: NO-BREAK SPACE. Dieses verhindert einen Zeilenumbruch, sieht aber genauso aus wie ein normales Leerzeichen. Die Verwendung von (oder  ) macht klar ersichtlich, wo solche geschützten Leerzeichen im Text vorkommen.
Der Wechsel zu UTF-8 bedeutet erneutes Speichern der Datei. Bei Verwendung einer Zeichencodierung wie UTF-8 kann auf die meisten Escapes verzichtet werden und einfach mit den Zeichen selbst gearbeitet werden. Um die Zeichencodierung eines Dokuments zu ändern, genügt es nicht, nur die Angabe der Zeichencodierung am Anfang der Seite oder auf dem Server zu ändern. Man muss das Dokument erneut speichern – in eben dieser Zeichencodierung. Für weitere Information, wie das in einem Anwendungsprogramm zu tun ist, siehe Einstellung der Zeichencodierung in Web-Editoren und Texteditoren.
Hexadezimal oder dezimal. Im Unicode-Standard werden die Zeichencodes hexadezimal angegeben, der Code des Zeichens á bspw. als U+00E1. Wegen dieser Konvention ist es ratsam, aber nicht zwingend, dass bei numerischen Zeichenreferenzen die Werte hexadezimal notiert werden, nicht dezimal. Führende Nullen sind nicht erforderlich, d.h. á kann auch durch á repräsentiert werden.
Ergänzende Zeichen (supplementary characters). Das sind die Unicode-Zeichen mit Zeichencodes jenseits derer der Zeichen der Basic Multilingual Plane (BMP). In UTF-16 wird ein solches Zeichen durch zwei 16-Bit-Ersatz-Zeichencodes (surrogate code points) aus der BMP codiert. Deshalb denken manche, dass diese Zeichen durch zwei Escapes repräsentiert werden, aber das ist falsch – es muss der einzelne Zeichencode angegeben werden; also bspw. 𣎴 anstatt ��
&-Zeichen. Obwohl HTML-Nutzerprogramme großzügig darüber hinwegsehen, sollte niemals ein &-Zeichen (Kaufmanns-Und) für sich allein im Text stehen. Besondere Beachtung gilt URIs, die Parameter enthalten. So sollte bspw. http://example.org/my-script.php?class=guest&name=user im Quelltext stehen, nicht http://example.org/my-script.php?class=guest&name=user.
Sagen Sie uns, was Sie denken (auf Englisch).
Übersetzung der englischen Version vom 2006-10-22. Letzte Änderung der übersetzten Version am 2008-04-07 11:51 GMT
Suchen Sie nach qa-escapes im i18n-Blog, um alle Dokumentänderungen nachzuvollziehen.
Copyright © 2005-2008 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.