Zeichensaetze, deafault Zeichensatz, benannte Zeichen usw.
Thomas N
- html
Hallo,
ich habe viel in selfhtml zu diesem Thema gelesen, und aber trotzdem einige
Fragen.
(mit "deafault Zeichensatz" "Zeichensaetze" kam im "Forum" kein Ergebnis, im Suchformular
werden meine Begriffe nicht im Klartext angezeigt, warum?)
Fragen:
1. Die deafault Zeichensatz-Angabe im Meta-Tag. Was bewirkt sie genau?
a. umgeht sie meinen aktuell eingestellten Zeichensatz (z.B. ISO 8859-1) im Browser,
und benutzt stattdessen die *deafault Zeichensatz-Angabe*?
2. Zitat: "Wichtig ist die Zeichensatzangabe vor allem dann, wenn Sie innerhalb der HTML-Datei z.B.
deutsche Umlaute nicht maskieren."
Ist es nicht eher "unsauber" Umlaute nicht zu maskieren? (Bin Anfaenger und moechte mir ein Bild
von "sauberem" HTML machen.)
Auf der andere Seite ist es ja aber auch (doppelt gemoppelt), oder?
3. Benannte Zeichen, erst hatte ich den Eindruck, damit koenne man ziemlich absolut Zeichen darstellen,
dem ist ja aber nicht so. Nun versuche ich mir ein Bild zu machen, welches Faktoren sind, die diese
Maskierung wieder relativieren. Dazu ein selhtml-Zitat: "Ein WWW-Browser muss jedoch HTML 4.0
interpretieren, und auch dann kann er nur solche Zeichen darstellen, für die er eine geeignete
Schriftart vorfindet."
a. Wo kann ich denn ersehen, welche Browserversion welche HTMLversion interpretiert?
Hab da noch nichts gefunden, oder was kann noch schief gehen, auch wenn HTML 4.0 vom Browser
unterstuetzt wird?
b. Die geeignete Schriftart vorfinden, was heisst das?
b2.Schriftart und Zeichensatz, wer hat eigendlich das Sagen?
Zeichensatz (z.B. ISO 8859-1), hat die dt. Umlaute, wenn ich nun aber eine Schriftart
(gleich Font, z.B. Arial) auf dem System habe, die keine dt. Umlaute hat, werden auch keine
Umlaute dargestellt. oder? Sondern die Zeichen, die der nummerischen Wertzuweisung entsprechen
Bsp.: das Euro-Zeichen.
(selhtml-Zitat: "Vermeiden Sie unter MS Windows, das Eurozeichen über die Tastatur erzeugt in
HTML einzutippen ([AltGr]+[e]). Der Grund ist, dass Microsoft das Eurozeichen intern auf den
Zeichenwert 128 gelegt hat, um es über Tastatur zugänglich zu machen und in vorhandene
Schriftarten einzubauen. Das entspricht jedoch nicht dem Unicode/ISO-10646-Standard,
auf dem HTML aufsetzt.")
Daraus folgt, dass die Umschreibung eines Zeichens (ob HTML/UNICODE) und eine korrekte
"deafault Zeichensatz-Angabe" nicht verhindern, das eine Schriftart/Font, statt dem gewollten
Zeichen, ein "Kaestchen" darstellt, (siehe z.B unter Windows Zeichensatztabelle).
c. Wie ist dies bei Benannte Zeichen: für mathematische Symbole, für technische Symbole,
für Pfeil-Symbole, für diverse Symbole, für Interpunktion?
4. In erster Linie geht es mir nicht um eine schnelle Loesung, sonder
ob ich richtig charakterisiert habe und um Grundlagenwissen.
Viele Gruesse u. Dank
Thomas N
Hallo Thomas
Fragen:
- Die deafault Zeichensatz-Angabe im Meta-Tag. Was bewirkt sie genau?
Der Browser weiß dann, welchen Zeichensatz er verwenden muss.
Ein Zeichensatz ordnet einem oder mehreren bytes ein Zeichen zu.
Den Zeichensatz innerhalb des Dokuments zu definieren, dass in benutzt ist allerdings schwierig. Vor allem bei Metatags weiß der Browser noch nicht einmal genau, wo er die Angabe findet.
Bei Zeichensätzen, die die ASCII-Zeichen anderen bytes zuordnen, gibt es da u.U. schwierigkeiten.
Zumindest ist die Erkennung schwieriger und im allgemeinen Fall unmöglich.
- Zitat: "Wichtig ist die Zeichensatzangabe vor allem dann, wenn Sie innerhalb der HTML-Datei z.B.
deutsche Umlaute nicht maskieren."
Ist es nicht eher "unsauber" Umlaute nicht zu maskieren?
Nein, das ist nicht Unsauber.
- Benannte Zeichen, erst hatte ich den Eindruck, damit koenne man ziemlich absolut Zeichen darstellen,
dem ist ja aber nicht so.
a. Wo kann ich denn ersehen, welche Browserversion welche HTMLversion interpretiert?
Die gängigen Browser behaupten alle, es zu tun, auch wenn das nicht immer der Fall ist.
In SELFHTML steht ja für einige Browser, welche Tags sie unterstützen.
b. Die geeignete Schriftart vorfinden, was heisst das?
Durch den Zeichensatz weiß der Browser jetzt um welche Zeichen es sich handelt. Er sagt aber nichts über deren Darstellung aus.
b2.Schriftart und Zeichensatz, wer hat eigendlich das Sagen?
Beide. Der Zeichensatz ordnet den Bytes Zeichen zu und die Schriftart den Zeichen eine graphische Darstellung.
Zeichensatz (z.B. ISO 8859-1), hat die dt. Umlaute, wenn ich nun aber eine Schriftart
(gleich Font, z.B. Arial) auf dem System habe, die keine dt. Umlaute hat, werden auch keine
Umlaute dargestellt. oder? Sondern die Zeichen, die der nummerischen Wertzuweisung entsprechen
Vermutlich wird gar nichts oder ein Ersatzzeichen dargestellt.
c. Wie ist dies bei Benannte Zeichen: für mathematische Symbole, für technische Symbole,
für Pfeil-Symbole, für diverse Symbole, für Interpunktion?
Dafür gilt das selbe. Der entsprechende Font muss vorhanden sein.
Grüße
Daniel
Zeichensaetze, default Zeichensatz, benannte Zeichen usw.
Hallo (Daniel),
Im Arbeitsspeicher stehen Byte-Werte, damit aus diesen lesbare Zeichen (z.B. Buchstaben) werden,
braucht es eine Konvention, die festlegt, welcher Byte-Wert als welches Zeichen dargestellt
werden soll. Dies ist Aufgabe der so genannten Zeichensätze.
Bsp. MS-DOS-Zeichensatz versus ANSI-Zeichensatz:
<img src="http://selfhtml.teamone.de/inter/dos_ansi.gif" border=0 alt="">
selfhtml-Zitat:
"Wo im ANSI-Zeichensatz beispielsweise ein kleines deutsches ü liegt, bietet der erweiterte
DOS-Zeichensatz eine hochgestellte 3 an."
Nachgefragt:
1.
- Die default Zeichensatz-Angabe im Meta-Tag. Was bewirkt sie genau?
Der Browser weiß dann, welchen Zeichensatz er verwenden muss.
Ein Zeichensatz ordnet einem oder mehreren bytes ein Zeichen zu.
Bei Zeichensätzen, die die ASCII-Zeichen anderen bytes zuordnen, gibt es da u.U. schwierigkeiten.
Zumindest ist die Erkennung schwieriger und im allgemeinen Fall unmöglich.
Ich gehe davon aus gemeint ist, was ich oben nochmals geschrieben habe. (denkprozess ;-))
Den Zeichensatz innerhalb des Dokuments zu definieren, dass in benutzt ist allerdings schwierig.
Vor allem bei Metatags weiß der Browser noch nicht einmal genau, wo er die Angabe findet.
Was ist mit (bei Metatags weiß der Browser noch nicht) gemeint und was mit (wo er die Angabe findet)?
Mir ist jetzt klar geworden, dass eine Umschreibung ohne einen Zeichensatz-Bezug Unsinn ist,
weil die Umschreibung nichts anderes macht, als einen Byte-Wert an der betreffenden Stelle im
HTML-Dokument zu "setzen". Und diser Byte-Wert bezieht sich auf einen bestimmten Zeichensatz,
wenn dieser nicht zur Verfügung steht, gibt es auch nicht 100% das umschriebene Zeichen an dieser Stelle.
Schriftart und Zeichensatz, wer hat eigendlich das Sagen?
Beide. Der Zeichensatz ordnet den Bytes Zeichen zu und die Schriftart den Zeichen eine
graphische Darstellung.
Gut. Und wie sind nun Schriftart und Zeichensatz "verzahnt"?
Der Zeichensatz bekommt den Byte-Wert und ordnet diesem ein Zeichen zu.
Die Schriftart bekommt dann den Auftrag vom Zeichensatz dieses Zeichen bitte darzustellen.
Und alle hoffen, das die Schriftart es kann.
Jetzt hab ichs einigermassen kapiert, oder?
Hier ein kleiner "selfhtml8-Kontext-Joke" zu benannten Zeichen:
"Erläuterung:
Ersetzen Sie die deutschen Sonderzeichen wie im obigen Beispiel durch die
entsprechenden Zeichenfolgen - keine Sorge, die Web-Browser verstehen das
und zeigen die Zeichen korrekt an."
http://selfhtml.teamone.de/html/allgemein/zeichen.htm#umlaute
Ist es nicht eher "unsauber" Umlaute nicht zu maskieren?
Nein, das ist nicht Unsauber.
Kann ich hier noch ein Argument haben? Für die Praxis, wann maskieren und wann nicht?
Wo finde ich noch weitere Angabe zum Default-Zeichensatz (Meta-Angabe), ausser:
http://selfhtml.teamone.de/html/kopfdaten/meta.htm#zeichensatz
Viele Grüsse
Thomas N
Hallo Thomas
Den Zeichensatz innerhalb des Dokuments zu definieren, dass in benutzt ist allerdings schwierig.
Vor allem bei Metatags weiß der Browser noch nicht einmal genau, wo er die Angabe findet.
Was ist mit (bei Metatags weiß der Browser noch nicht) gemeint und was mit (wo er die Angabe findet)?
Der Browser bekommt das Dokument und fängt es an zu verarbeiten. Er kann zu diesem Zeitpunkt noch nicht wissen, welchen Zeichensatz das Dokumment verwendet. (Außer, dieser wird im HTTP-Header mitgeliefert, was der Fall sein sollte.
Der validator meldet sogar einen Fehler, wenn im HTTP-Header ein Zeichensatz steht und im Dokument ein anderer angegeben ist)
Ohne den Zeichensatz zu kennen kann ein Browser das Dokument theoretisch nicht verarbeiten. Er muss also entweder raten oder hoffen, dass das Dokument mit Asciizeicehn beginnt, was fast immer der Fall ist, da die meisten Zeichensätze den ASCII-Zeichensatz nur erweitern.
Wo die Metatags im Dokument stehen, ist nicht sicher.
Es können etliche Angaben vorher kommen. Bei XML z.b. müsste die Zeichensatzangabe schon ganz am Anfang stehen, was die Erkennung erheblich vereinfacht.
Mir ist jetzt klar geworden, dass eine Umschreibung ohne einen Zeichensatz-Bezug Unsinn ist,
weil die Umschreibung nichts anderes macht, als einen Byte-Wert an der betreffenden Stelle im
HTML-Dokument zu "setzen". Und diser Byte-Wert bezieht sich auf einen bestimmten Zeichensatz
Die Umschreibung, falls Du damit < u.a. meinst, bezieht sich nicht auf einen Zeichensatz. Damit werden direkt Zeichen festgelegt. Auch die Umschreibungen wie &#xHH; beziehen sich nicht auf den Zeichensatz des Dokuments sondern immer auf Unicode.
Man kann damit auch Zeichen verwenden, die nicht im Zeichensatz des Dokuments enthalten sind.
wenn dieser nicht zur Verfügung steht, gibt es auch nicht 100% das umschriebene Zeichen an dieser Stelle.
Gut. Und wie sind nun Schriftart und Zeichensatz "verzahnt"?
Der Zeichensatz bekommt den Byte-Wert und ordnet diesem ein Zeichen zu.
Die Schriftart bekommt dann den Auftrag vom Zeichensatz dieses Zeichen bitte darzustellen.
Und alle hoffen, das die Schriftart es kann.
Jetzt hab ichs einigermassen kapiert, oder?
Ja.
Ist es nicht eher "unsauber" Umlaute nicht zu maskieren?
Nein, das ist nicht Unsauber.
Kann ich hier noch ein Argument haben? Für die Praxis, wann maskieren und wann nicht?
Immer dann maskieren, wenn Du ein Zeichen haben willst, dass nicht im Zeichensatz vorkommt.
Du kannst natürlich auch direkt Unicode verwenden. Dann brauchst Du gar nicht mehr zu maskieren (abgesehen von <>&"')
Für Unicode brauchst Du allerdings einen entsprechenden Editor.
Wo finde ich noch weitere Angabe zum Default-Zeichensatz (Meta-Angabe), ausser:
Beim W3C solltest Du was dazu finden.
Bei der Verwendung von XHTML müsste sich die Metaangabe aber eigentlich erübrigen. Da man da den Zeichensatz schon am Anfang angeben muss.
Grüße
Daniel
Hallo (Daniel, vielen Dank für die Antwort!)
Der Browser bekommt das Dokument und fängt es an zu verarbeiten. Er kann zu diesem Zeitpunkt noch nicht wissen, welchen Zeichensatz das Dokumment verwendet. (Außer, dieser wird im HTTP-Header mitgeliefert, was der Fall sein sollte.
Bsp. für einen HTTP-Header:
HTTP/1.1 200 OK
Date: Tue, 23 Oct 2001 18:38:42 GMT
Server: Rapidsite/Apa-1.3.14 (Unix) FrontPage/4.0.4.3 mod_ssl/2.7.1 OpenSSL/0.9.6
Last-Modified: Mon, 27 Aug 2001 10:33:26 GMT
ETag: "3e6fb0c-2a0f-3b8a21f6"
Accept-Ranges: bytes
Content-Length: 10767
Connection: close
Content-Type: text/html
Wie soll denn die Zeichensatz-Angabe in den HTTP-Header kommen?
Holt sich der Server die Angabe aus dem zu verschickenden HTML-Dokument?
Wie sieht solch ein Header aus?
Der validator meldet sogar einen Fehler, wenn im HTTP-Header ein Zeichensatz steht und im Dokument ein anderer angegeben ist)
Klingt logisch.
Ohne den Zeichensatz zu kennen kann ein Browser das Dokument theoretisch nicht verarbeiten. Er muss also entweder raten oder hoffen, dass das Dokument mit Asciizeicehn beginnt, was fast immer der Fall ist, da die meisten Zeichensätze den ASCII-Zeichensatz nur erweitern.
Jetzt hab ich wirklich verstanden, warum man mit ascii auf der "sicheren Seite" steht.
Wo die Metatags im Dokument stehen, ist nicht sicher.
Es können etliche Angaben vorher kommen. Bei XML z.b. müsste die Zeichensatzangabe schon ganz am Anfang stehen, was die Erkennung erheblich vereinfacht.
Was heisst am Anfang? Für mich als Anfänger stehen Metatags am Anfang.
Macht es einen Unterschied, ob ein Metatag in erster, oder sechster Zeile steht?
Mir ist jetzt klar geworden, dass eine Umschreibung ohne einen Zeichensatz-Bezug Unsinn ist,
weil die Umschreibung nichts anderes macht, als einen Byte-Wert an der betreffenden Stelle im
HTML-Dokument zu "setzen". Und diser Byte-Wert bezieht sich auf einen bestimmten Zeichensatz
Die Umschreibung, falls Du damit < u.a. meinst, bezieht sich nicht auf einen Zeichensatz. Damit werden direkt Zeichen festgelegt. Auch die Umschreibungen wie &#xHH; beziehen sich nicht auf den Zeichensatz des Dokuments sondern immer auf Unicode.
Man kann damit auch Zeichen verwenden, die nicht im Zeichensatz des Dokuments enthalten sind.
Mit Umschreibung meine ich z.B.:
Zeichen Beschreibung Name in HTML Unicode in HTML
& Ampersand-Zeichen, kaufmännisches Und & &
" Anführungszeichen oben " "
Du sagst, die Umschreibungen beziehen sich nicht auf den Zeichensatz des Dokuments sondern immer auf Unicode.
Was heisst das? Unicode bedeutet für mich (bis jetzt) nichts anderes, als wie oben (& = &).
Und nun kommt mein "Knackpunkt", meine Erfahrung ist, dass eben nicht Zeichen dargestellt werden,
die nicht im Zeichensatz des Dokuments enthalten sind. (grübel, nein)
Ah, es liegt dann am Font, wenns die Umschreibung nicht bringt, nicht am Zeichensatz, richtig?
Für die Praxis, wann maskieren und wann nicht?
Immer dann maskieren, wenn Du ein Zeichen haben willst, dass nicht im Zeichensatz vorkommt.
Du kannst natürlich auch direkt Unicode verwenden. Dann brauchst Du gar nicht mehr zu maskieren (abgesehen von <>&"')
Für Unicode brauchst Du allerdings einen entsprechenden Editor.
Was fürn Editor, & kann ich doch von Hand eingeben?
Zum mitdenken für mich:
Maskierung, gibt es hier einen offiziellen Begriff?
Bsp.:
So genannte *named entities = benannte Zeichen*, sind nur Zeichen nach dem folgenden Schema notiert:
&[Name];
Beispiel einer Notation in HTML:
α
Frage:
Und Unicode in HTML (z.b. &), wie ich oben für & (kaufmännisches Und) angab, ist gar kein
*named entitie = benanntes Zeichen*, oder wie?
Ei, ist das chaotisch!
Grundsatzfrage:
Was heisst Maskieren bzw. Umschreibung, benanntes Zeichen?
Du sagst, immer dann maskieren, wenn ich ein Zeichen haben will, dass nicht im Zeichensatz vorkommt.
Wie soll das gehen? Da funkt doch der Font wieder dazwischen.
Also, ich kappiers irgendwie wieder nicht mehr.
Versuch:
Ich will ein Zeichen umschreiben, weil es nicht im Zeichensatz vorhanden ist.
Es wird aber nur dargestellt, wenn der Font... ja was muss der Font tun, damit es klappt?
Vielen Dank, Grüsse
Thomas N
Hallo Thoma
Der Browser bekommt das Dokument und fängt es an zu verarbeiten. Er kann zu diesem Zeitpunkt noch nicht wissen, welchen Zeichensatz das Dokumment verwendet. (Außer, dieser wird im HTTP-Header mitgeliefert, was der Fall sein sollte.
Wie soll denn die Zeichensatz-Angabe in den HTTP-Header kommen?
Content-Type: text/html; charset=iso-8859-1
Holt sich der Server die Angabe aus dem zu verschickenden HTML-Dokument?
Kommt sicher auf die Serversoftwaren an. Der Apache scheint das nicht zu tun, zumindest nicht bei meiner Konfiguration.
Was heisst am Anfang? Für mich als Anfänger stehen Metatags am Anfang.
Macht es einen Unterschied, ob ein Metatag in erster, oder sechster Zeile steht?
Ja, bei XML steht die Angabe zum Zeichensatz immer in der 1. Zeile. Bei HTML können noch jede Menge andere Angaben kommen.
z.B. Scripts
Mit Umschreibung meine ich z.B.:
Zeichen Beschreibung Name in HTML Unicode in HTML
& Ampersand-Zeichen, kaufmännisches Und & &
" Anführungszeichen oben " "
Du sagst, die Umschreibungen beziehen sich nicht auf den Zeichensatz des Dokuments sondern immer auf Unicode.
Was heisst das? Unicode bedeutet für mich (bis jetzt) nichts anderes, als wie oben (& = &).
Unicode ist ein Zeichensatz der so ziemlich alle modernen Schriftzeichen enthält. (Also lateinische, griechische, hebräische, japanische, chinesische, arabische, mathematische uvm.)
Ah, es liegt dann am Font, wenns die Umschreibung nicht bringt, nicht am Zeichensatz, richtig?
Genau. Der Browser weiß dann, welches Zeichen Du meinst.
Nur nicht, wie es aussieht.
Für die Praxis, wann maskieren und wann nicht?
Immer dann maskieren, wenn Du ein Zeichen haben willst, dass nicht im Zeichensatz vorkommt.
Du kannst natürlich auch direkt Unicode verwenden. Dann brauchst Du gar nicht mehr zu maskieren (abgesehen von <>&"')
Für Unicode brauchst Du allerdings einen entsprechenden Editor.
Was fürn Editor, & kann ich doch von Hand eingeben?
Dieser Wert 38 ist die Nummer des Zeichens in Unicode.
Wenn Du die Zeichen direkt eingibst, stehen die entsprechenden Bytes (Bei Unicode sind es mehrere pro Zeichen) direkt im Dokument. Nicht als Umschreibung.
Und Unicode in HTML (z.b. &), wie ich oben für & (kaufmännisches Und) angab, ist gar kein
*named entitie = benanntes Zeichen*, oder wie?
Nein, es ist eine Character Reference.
&bla; ist auch eine Referenz. Unter Entity versteht man eigentlich den Wert, der dann Eingefügt wird.
Wie soll das gehen? Da funkt doch der Font wieder dazwischen.
Ja. Der Browser kann das Dokument aber lesen.
Wenn Du ein Zeichen, dass nicht im Zeichensatz vorkommt, direkt ins Dokument schreibst, kann er das entweder falsch oder gar nicht.
Darstellen kann er das Zeichen freilich nur mit dem richtigen Font. Aber wenn er den nicht hat, kann er das Zeichen wenigstens nicht darstellen.
Versuch:
Ich will ein Zeichen umschreiben, weil es nicht im Zeichensatz vorhanden ist.
Es wird aber nur dargestellt, wenn der Font... ja was muss der Font tun, damit es klappt?
Dem Zeichen ein Bild zuordnen. Es gibt verschiedene arten von Fonts, aber alle definieren sie, wie ein Zeichen am Bildschirm auszusehen hat.
Zur Veranschaulichung:
Eine Suchmaschiene braucht auch den Zeichensatz um zu wissen, was für Wörter das Dokument enthält.
Sie brauch aber keinen Font. Sie stellt das Dokument ja nicht dar, sie verarbeitet es nur.
Grüße
Daniel