Powl: UTF-8 und MySQL

Beitrag lesen

Hallo,

Die Lösung habe ich gefunden
http://de3.php.net/manual/de/function.utf8-encode.php

aber die Erkenntnis, also die Antwort auf die Frage Warum, fehlt mir noch.

Peder

Ich finde, Du zäumst hier das Pferd von hinten auf. Besser wäre es, die Daten im gewünschten Charset in der Datenbank zu speichern, anstatt sie mit PHP im nachhinein nach UTF-8 zu codieren.
Du musst auf folgendes achten:

1. Wenn die Daten aus einem HTML Formular stammen, dann muss das HTML Dokument auch als UTF-8 erkannt werden. Dabei hilfreich wäre der meta-tag:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">,
oder bei xHTML Dokumenten der Prolog
<?xml version="1.0" encoding="utf-8"?> => allerdings taucht hier der IE6 in den Quirksmode ab.

2. Nachdem die Datenbankverbindung hergestellt wurde, definierst Du den Charset für die Verbindung explizit auf utf8. Je nach MySQL Version mit:
mysql_set_charset("utf8", [ressource $db_link)
oder bei älteren Version (<5 glaube ich)
mysql_query("SET NAMES utf8", [ressource $db_link);

3. Beim erstellen der Tabellen gibst Du auch deren Charset an, z.B.:

  
CREATE table IF NOT EXISTS tablename(  
      Foo VARCHAR(20),  
      Bar TEXT  
    ) CHARACTER SET utf8 COLLATE utf8_general_ci;  

4. Das HTML Dokument, in welchem die Daten angezeigt werden sollen, muss ebenfalls wie in Punkt eins beschrieben mit Charset UTF-8 angezeigt werden.

Wenn diese 4 Schritte konsistent durchgezogen werden, dann klappt's auch mit den Umlauten.

netten Tag
^da Powl

--
===============================
powl.hat-gar-keine-homepage.de/