[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mysql-DB in utf8 verändern



Nachstehendes gilt fuerr MySQL 5, keine Ahnung, ob's auch bei der
4.0-er klappt, hab grad keine da zum Testen, aber vielleicht ist's bei
Dir ja einen Versuch wert. Die 4.1-er unterstuetzt def. UTF-8 (ist
dort z.B. unter Gentoo der Standard-Zeichensatz).

Sollte das nachstehende nicht funktionieren, koennte es durchaus sein,
dass MySQL 4.0 UTF-8 nicht unterstuetzt.

Ich weiss, dass MySQL 3.2.23 UTF8 def. nicht unterstuetzt hat, wir
mussten uns da was eigenes basteln, bei der 4.0 bin ich mir etwas
unsicher.

Na denn:

Zunaechst einmal:

mysql> status;
--------------
mysql  Ver 14.12 Distrib 5.0.26, for suse-linux-gnu (i686) using readline 5.1

Connection id:          11
Current database:       rex
Current user:           root@localhost
SSL:                    Not in use
Current pager:          less
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.26
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 132 days 9 hours 7 min 47 sec

Threads: 1  Questions: 17  Slow queries: 0  Opens: 11  Flush tables: 1
 Open tables: 6  Queries per second avg: 0.000
--------------

mysql>


Zur Aenderung des Charactersets:

Du kannst in MySQL 5 mehrere Chactersets verwenden. Du hast die Moeglichkeit,

- ein Characterset golbal fuer die ganze Datenbank zu setzen

- lediglich eine Tabelle auf UTF-8 laufen zu lassen, obwohl die
DB-Instanz z.B. auf latin1 laeuft.

1. Setzen eines Charactersets fuer die gesamte DB-Instanz:
--------------------------------------------------------------------------------------

In der Datei /etc/mysql/my.cnd nach dem Eintrag

[mysqld]

suchen

Hier muss dann eine Zeile eingefuegt werden, die da lautet

default-character-set=utf8

Achtung: utf8 hat hier keinen Bindestrich, den man normalerweise
erwartet ("UTF-8")...

Wenn Du dann zusaetzlich noch die Zeile

skip-character-set-client-handshake

anschliessend einfuegst, geht MySQL auch davon aus, dass jeder Client
seine Requests UTF-8-kodiert rueberbeamt. Ansonsten versucht MySQL,
das verwendete Characterset fuer die Client-Kommunikation zu erraten
bzw. liesst dieses aus den URL-Parametern.

2. Setzen eines eigenen Charactersets fuer eine dedizierte Tabelle
------------------------------------------------------------------------------------------------
Funktioniert mit SQL-Bordmitteln, nachstehend ein entspr. Create Table
- Statement:

CREATE TABLE Scrooge_McDuck (
 something VARCHAR(250) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Ich meine, es waere in den Manualen
(http://dev.mysql.com/doc/refman/5.1/de/index.html) auch ganz gut
erklaert.

HTH

Gregor

PS.: Verzeiht mir die Hardcopy von der Suse-Box, aber unter Etch ist's
zumindestens identisch--
what's puzzlin' you, is the nature of my game
gpgp-fp: 79A84FA526807026795E4209D3B3FE028B3170B2
gpgp-key available @ http://pgpkeys.pca.dfn.de:11371


Reply to: