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.
Nein, so war das nicht gemeint. TEXT und BLOB haben andere Aufgaben als CHAR und VARCHAR. Sie sind bei Suchoperationen langsamer, weil in der eigentlichen Datenbank nur Zeiger auf Speicher stehen, der sich ganz woanders auf der Platte befinden kann.
OK.
Möglichkeit 3 wirkt so: Du kriegst das ISO-codierte Formular zusammen mit der Zeichenfolge Α anstelle des Alphas. Das speicherst du in deiner DB, und gibst es irgendwann als Zeichenfolge in deiner Seite aus. Wenn du nichts weiter codierst oder in Entities umwandelst, wird im Quelltext 1:1 die Zeichenfolge Α stehen, und das bewirkt die Ausgabe eines großen Alphas.
Ja, in der DB stehen solche Dezimalzahlen. Was ich aber immer noch nicht verstehe ist, ob das Unicode ist. Muss es ja sein, oder?
Wenn du aber vernünftig vorgehst, dann wirst du dem Benutzer erlauben wollen, den Text 1:1 einzugeben, was bedeutet, dass er auch <, > und & direkt eingeben darf, ohne es als Entities schreiben zu müssen. Du speicherst diese Zeichen dann 1:1 in der Datenbank, aber bei der Ausgabe läßt du htmlspecialchars() oder htmlentities() drüberlaufen. Das bedeutet: alle &-Zeichen werden zu "&" umgewandelt, und der Browser zeigt dann ein einzelnes &-Zeichen an.
Gute Idee.
Wenn du aber in deinem gesendeten Formular das Alpha eingegeben hast, der Browser das aber in Α umgewandelt hat, dann wird die Datenbank diese Zeichenfolge auch wieder ausspucken - htmlspecialchars() wird das &-Zeichen erkennen und ein "&" draus machen, und das Quelltext-Resultat "&#913;" wird im Browser eben NICHT als Alpha angezeigt.
Mist.
Jetzt könnte man natürlich schlau sein und alle Entities vor dem Speichern in die Datenbank oder nach dem Auslesen z.B. in UTF-8 wandeln. Aber was ist, wenn der Benutzer die Zeichenfolge "Α" ins Formular und damit in die Datenbank geschrieben hat. Beispielsweise in dem Satz "Das griechische wird als Entity Γ geschrieben." Ich denke, du erkennst die Problematik.
Verstehe, was du meinst. Mann das ist echt übel. Was da alles für Probleme auftauchen.
Es wird scheinbar funktionieren, dich aber nicht 100% glücklich machen. Und den Besucher auch nicht. Mindestens weil die Seiten durch die Entities ziemlich aufgebläht sind.
Ja es funktioniert. Im Moment hantiere ich aber noch nicht mit Formularen. 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 Α 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 ?
Aber du sagst es - dadurch, dass entities im Quelltext stehen, werden die html Seiten natürlich bei längeren Texten, wie z.B. AGB, sehr groß.
Aber was soll ich machen. Die mySQL Version 4.1 befindet sich noch in der beta Phase.
Also