Problem mit Entities, ISO-8859-1, UTF-16 und dem Validator!
Christian
- sonstiges
0 MudGuard
Hi,
ich habe in meiner Datenbank Zeichen, die nicht zum ASCII-Code gehören, und zwar Anführungsstriche unten und oben (sind aber nicht die ", sondern â und â)
--> http://www.htmlhelp.com/reference/html40/entities/special.html
jedenfalls möchte ich die Zeichen durch o.g. Entities ersetzen, da sonst der W3C-Validator meckert und ich meine Seiten natrürlich valide gestalten will. Ich benutze dazu PHP/MySQL.
Da die PHP-Funktion htmlentities() nur wenige (die üblichen) Entities kennt und ersetzt, dachte ich an ereg_replace() bzw str_replace(), um die Zeichen, durch â bzw â zu ersetzen.
Ich wollte das Zeichen in die PHP-Datei reinkopieren, da kam aber nur ein weißes leeres Quadrat. Nicht weiter schlimm, dachte ich mir,... hauptsache er speichert es richtig. Ich habs dann auch als Unicode-Datei gespeichert und hochgeladen (allerdings kann ich nur im ASCII-Mode hochladen).
Beim Validieren kam dann folgenden Fehlermeldung:
Sorry, I am unable to validate this document because on line 100 it contained one or more bytes that I cannot interpret as utf-16 (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication.
Ich habe auch schon versucht, das ganze Entity Problem zu umgehen, indem ich das Dokument einfach als UTF-16, anstatt als ISO-8859-1 auszeichne. Dann kommt aber dieselbe Fehlermeldung (nur line 1), auch auf Seiten, die NUR ASCII-Code enthalten, und keine Sonderzeichen.
Wieso bringt der Validator das?? Ich dachte UTF-16 ist weltweit und umfasst alle Zeichen, demnach nach auch alle ASCII-Zeichen.
ISO-8859-1 ist doch nur eine Teilmenge von UTF-16, oder!?
Wenn das so ist, dann kann man seine Seiten eigentlich auch immer mit UTF-16 auszeichnen.
Hat jemand ne Idee, wie ich das gelöst bekomme??
Christian
PS: Den meisten Browser machen die unüblichen Anführungsstriche nichts aus, nur dem Validator.
Hi,
Ich habe auch schon versucht, das ganze Entity Problem zu umgehen, indem ich das Dokument einfach als UTF-16, anstatt als ISO-8859-1 auszeichne. Dann kommt aber dieselbe Fehlermeldung (nur line 1), auch auf Seiten, die NUR ASCII-Code enthalten, und keine Sonderzeichen.
Argh. Nur die Tatsache, daß Du eine andere encoding-Angabe machst, ändert ja nicht das tatsächliche Encoding.
Wieso bringt der Validator das?? Ich dachte UTF-16 ist weltweit und umfasst alle Zeichen, demnach nach auch alle ASCII-Zeichen.
Du verwechselst den Zeichensatz Unicode mit einer seiner Codierungsvarianten UTF-16.
ISO-8859-1 ist doch nur eine Teilmenge von UTF-16, oder!?
Nein. ISO-8859-1 ist eine bestimmte Art der Codierung für eine 256 Zeichen große Teilmenge aus dem Unicode - jedem dieser 256 Zeichen entspricht dabei 1 Byte.
UTF-16 ist eine Art der Codierung für den kompletten Unicode, in der den meisten Zeichen 16 Bit (daher UTF-16) - also 2 Byte entsprechen.
Wenn das so ist, dann kann man seine Seiten eigentlich auch immer mit UTF-16 auszeichnen.
Nein, nur dann, wenn die entsprechenden Resourcen auch tatsächlich die entsprechende Codierung verwenden.
Aber Zeichensatz (im Gegensatz zur Codierung) ist bei HTML immer Unicode...
cu,
Andreas