phpbar.de logo

Mailinglisten-Archive

[php] Problem UTF-8 Daten Zeichensatz geht verloren beim schreiben in Datenbank

[php] Problem UTF-8 Daten Zeichensatz geht verloren beim schreiben in Datenbank

Martin Spuetz mas at spuetz.ath.cx
Don Feb 22 20:01:34 CET 2007


Hallo Marcel,

Marcel Kurz wrote:
> ich hab eine Datei die Daten im UTF8 Format enthält.

wirklich? Ich setze bei utf8 immer folgendes in den View:

Content-Type: text/html; charset=utf-8

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

In meine "config.php":

ini_set('default_charset', 'utf-8');

> Diese lese ich mit PHP aus und will Sie dann in eine MySQL 4.1.22 
> Datenbank schreiben. Bei dem Schreiben geht aber irgendwie der 
> Zeichensatz verloren.
> Wenn ich die ausgelesenen Daten im Browser ausgebe stimmt der
>  Datensatz noch.

IMO:
Übernimmt PHP eine Charset Kodierung, je nachdem wie es eingestellt
ist, vielleicht erklärt es das.
Wenn du prepared statements verwendest (oder mysql_real_escape) wird
der Zeichensatz entsprechend kodiert, wenn du z.B. deine Seiten in
ISO-8859-1 hast und default_charset = ISO-8859-1, deine DB aber auf
utf8, brauchst du kein utf8_encode / utf8_decode.

> Wenn ich vor dem INSERT noch ein SET NAMES 'utf8' und 
> SET CHARACTER SET 'utf8' setze, dann bekomme ich nur '?????' in 
> der DB.

Ich setzte auch die beiden Queries, direkt nach dem db connect.

> Ohne SET NAMES und SET CHARACTER SET stehen komische Zeichen 
> in der DB aber kein UTF8.
> Die Tabelle und das Feld steht auf utf8_general_ci.

Mit welchem Programm schaust du in die Datenbank? Bitte nicht
phpmyadmin benutzen,

Nimm lieber direkt MySQL unter der Konsole, dort muss u.U auch NAMES
und CHARACTER SET gesetzt werden, kommt auf die MySQL-Config an.

Beste Grüße,
Martin


php::bar PHP Wiki   -   Listenarchive