[MySQL] Einfügen von UTF8 Texten
am 23.07.2007 15:58:44 von Andreas PankratzHallo Newsgroup,
ich habe mit mysqldump zu kämpfen, das mir die Umlaute der deutschen
Sprache nicht richtig abspeichert. (Umgeleitet in Datei, geöffnet in
einem UTF8 fähigen Editor) Wie ich bemerkt habe hat jedoch das MySQL
GUI Administrator auch seine Probleme damit.
Die Daten werden über PHP eingefügt und ausgelesen, im Browser werden
die Umlaute korrekt angezeigt. Spiel ich jedoch ein Backup ein, so
werden die Umlaute eben nicht mehr angezeigt.
Hier einige Infos + Testtabelle:
# file -i index.php
index.php: text/x-c++; charset=3Dutf-8
<--omitted-->
<--omitted-->
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.22 |
+-----------+
1 row in set (0.00 sec)
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show create table fu\G
*************************** 1. row ***************************
Table: fu
Create Table: CREATE TABLE `fu` (
`id` int(10) unsigned NOT NULL auto_increment,
`text` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=3DInnoDB DEFAULT CHARSET=3Dutf8
1 row in set (0.00 sec)
mysql> select * from fu;
+----+--------+
| id | text |
+----+--------+
| 1 | äöbc |
+----+--------+
1 row in set (0.00 sec)
Was mich eben stutzig macht, dass der MySQL Administrator die Zeichen
auch nicht lesen kann, die Umlaute die jedoch über den Administrator
eingefügt werden passen auch im Backup. Deshalb ist meine Vermutung,
dass die Umlaute bereits falsch an die Datenbank gesendet werden,
warum werden Sie aber, solang kein externes Programm eingreift wieder
richtig dargestellt?
Brauch ich jetzt utf8_encode() und utf8_decode()? Is ja normalerweise
ein Schmarrn, wenn die Daten in UTF8 kommen und schließlich auch in
UTF8 angezeigt werden. Ist die Frage: Wenn die endgültige HTML in UTF8
codiert ist, wird dann das Forumlar auch in UTF8 gesendet und wie
verarbeitet das PHP?
Gruß
Andreas Pankratz