MySQL Zeichenkodierung (UTF8)
Daniel
- datenbank
Ahoi alle,
hab da grad ein kleines Problem bemerkt. Es geht um eine Seite die per CMS gepflegt werden soll und von der es mehrsprachige versionen gibt. unter anderem Chinesisch, Französisch und Deutsch. Auf dem Testserver ist:
MySQL 4.0.22
Auf dem endgültigen server wird minimum
MySQL 4.1.18
sein. dort kann man ja per:
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
nach der Typ angabe entsprechend für die DB die Zeichensetzung einstellen für die Tabellen. geht das auch in MySQL 4.0.22? wenn ja kann man das anchträglich mit einem ALTER TABLE aktuallisieren?
MfG
Ahoi alle,
Also mit einem:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci
lässt sich der Charset in MySQL 4.1.18 ohne probleme ändern.
Bei MySQL 4.0.22 dagegen kommt ein Syntaxerror. da sich diese nicht geändert hat (vermut) wird das von dieser älteren Version nicht unterstütz.
Die Daten werden voraussichtlich aber auf der lokalen Version eingepflegt, ich vermute stark das es dann zu Komplikationen kommen wird, hat jmd tips?
MfG
echo $begrüßung;
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci
lässt sich der Charset in MySQL 4.1.18 ohne probleme ändern.
Bei MySQL 4.0.22 dagegen kommt ein Syntaxerror. da sich diese nicht geändert hat (vermut) wird das von dieser älteren Version nicht unterstütz.
Richtig. Version 4.0 kann nicht wirklich mit UTF-8 umgehen und hat das Thema Zeichenkodierung nur recht oberflächlich behandelt. Es ist zwar prinzipiell kein Problem, die UTF-8-Bytefolge in einer 4.0 abzulegen und von dort auch wieder herauszulesen, aber eine weitere Stringverarbeitung, wie Suchen und Sortieren, ist mit den Bytewerten nicht möglich. Dazu braucht man ein Verständnis für die verwendete Kodierung, und das hat für UTF-8 erst die Version 4.1.
Die Daten werden voraussichtlich aber auf der lokalen Version eingepflegt, ich vermute stark das es dann zu Komplikationen kommen wird, hat jmd tips?
Außerdem stolpern Kodierungs-Anfänger regelmäßig über die vielen verschiedenen Möglichkeiten MySQLs, eine Kodierung anzugeben und zu verwenden. Neben der Kodierungseinstellung der Felder ist vor allem die Einstellung der aktuellen Verbindung wichtig. Dies läßt sich on-the-fly auch erst ab Version 4.1 ändern, wofür man ein SET NAMES-Statement absendet oder besser die Funktion mysql_set_character_set() (die erst in PHP5 mit der mysqli-Extension eine Implementierung gefunden hat) verwendet.
Du bekommst also in beiden Fällen, Testserver und Produktivserver, unterschiedlichen Code bzw. Fallunterscheidungen, die sich um die Gegebenheiten der beiden Versionen zu kümmern hat.
echo "$verabschiedung $name";
Moin!
Auf dem Testserver ist:
MySQL 4.0.22
Auf dem endgültigen server wird minimum
MySQL 4.1.18
sein.
Dann aktualisiere den Testserver auf eine 4.1.x-Version. Mit dem Schritt von 4.0 nach 4.1 hat sich bei MySQL soviel getan, dass man durchaus auch einen Hauptversionsschritt hätte rechtfertigen können - zumindest in den für dich wichtigen Teilen wie Zeichencodierung.
Den Testserver auf 4.0 zu lassen wäre jedenfalls extrem schwachsinnig - und weil's der Testserver ist, ist der ja auch viel leichter aktualisierbar, als der Liveserver (der zum Glück noch einigermaßen aktuell ist, obwohl auch die 4.1-Linie so langsam ausstirbt und durch 5.x ersetzt wird).
- Sven Rautenberg