Sven Rautenberg: Griechisch und Unicode / Einen hab ich noch ...

Beitrag lesen

Moin!

Dein Browser wandelt die griechischen Zeichen in Entities, weil er sie nicht gültig im Formularzeichensatz codieren kann (der vermutlich ISO-8859-1 ist).

Habe mir gerade mal eine HTML Seite ausgeben lassen. Mit den numerischen Codes aus der DB. Scheint doch Unicode zu sein, da sie korrekt als griechisch auf der html-Seite erscheinen, die ja UTF-8 kodiert ist.

Die Codierung als UTF-8 ist vollkommen uninteressant für diese numerischen Entities. Die sind extra dafür da, bei einer Zeichencodierung, die ein bestimmtes Sonderzeichen nicht erlaubt, dieses dennoch anzugeben. Wenn du beispielsweise eine ISO-8859-1-Seite mit deutschem Text hast, und über irgendwelche Winkel redest, dann werden hier und da griechische kleine Buchstaben auftauchen: "Die Winkel ,  und  im Dreieck ergeben immer 180 Grad".

Bei einer UTF-8-Seite ist dir das vollkommen egal: Text eintippen, speichern - paßt schon. Bei ISO-8859-1 mußt du entweder die numerischen Entities, oder beispielsweise die benannten Zeichen α, β und γ verwenden (siehe auch http://de.selfhtml.org/html/referenz/zeichen.htm).

Ja, in der DB stehen solche Dezimalzahlen. Was ich aber immer noch nicht verstehe ist, ob das Unicode ist. Muss es ja sein, oder?

Ja, es ist in gewisser Weise Unicode. Die dezimale Zahl gibt exakt das Unicode-Zeichen an. Aber es ist erstens nur in HTML verwendbar (nur Browser wandeln das in die richtigen Zeichen), und zweitens das ineffizienteste Format, was man sich vorstellen kann.

Ja es funktioniert. Im Moment hantiere ich aber noch nicht mit Formularen.

Aber PHPMyAdmin hantiert mit Formularen! Auf die bezieht sich die Aussage zuerst! Denn mit PHPMyAdmin kriegst du ja die Texte in die DB - derzeit eben nur schlecht, weil dein Browser kein UTF-8 schickt.

Alles was die fremdsprachlichen Seiten tun sollen ist, griechischen Text aus der DB holen. Solange der richtig dargestllt wird ist es doch egal, ob im Quelltext &#913 steht oder das wirkliche griechische Alpha. Also ich entnehme dieser Formulierung, dass du im Moment auch keine Alternative siehst als Entities im Quelltext zu haben wenn man mit mysql 4.0.20 arbeitet ?

Falsch gelesen. UTF-8 ist auch mit mysql 4.0 und davor eine Alternative. Nur mußt du halt an jeder Stelle echt mit UTF-8 arbeiten. MySQL 4.1 würde dir genauso Probleme machen, wenn du ein schlechtes, UTF-8-ignorierendes PHPMyAdmin verwenden würdest. Du brauchst ein UTF-8-sendendendes PHPMyAdmin-Formular - alternativ baust du dir dein eigenes Formular. Texte in eine DB speichern kann so schlimm ja nicht sein, rauskriegen tust du sie ja auch schon. Vergiß nur nie, deine zu speichernden Strings vorher zu escapen: mysql_escape_string()!

Aber was soll ich machen. Die mySQL Version 4.1 befindet sich noch in der beta Phase.

PHPMyAdmin auf UTF-8-Formulare umstellen hilft dir. Der Rest mit der Datenbank ist uninteressant.

- Sven Rautenberg