dedlfix: UTF-8 und MySQL

Beitrag lesen

echo $begrüßung;

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"?>

Ein kurzer Versuch mit XML-Prolog auf UTF-8 und dem Meta-Element auf ISO-8859-1 gestellt, dazu einen HTTP-Content-Type "text/html" ohne charset-Zusatz, ergibt im Firefox ISO-8859-1. Der XML-Prolog ist da also nicht maßgebend, so wie es aussieht.
Was aber auf alle Fälle Vorrang hat ist der charset-Zusatz im HTTP-Header Content-Type.

  1. 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)

Das ist auch von der PHP-Version abhängig. Erst seit 5.2.3 gibt es diese Funktion. Das mysqli-Pendant dazu gibt es schon seit Version 5.0.5. Mit der 4er Reihe von PHP bleibt aber nur SET NAMES (besser: Umsteigen auf 5).

oder bei älteren Version (<5 glaube ich)
mysql_query("SET NAMES utf8", [ressource $db_link);

Konkret: MySQL 5.0.7 und 4.1.13. Diese alten Versionen sollte man in freier Wildbahn aber nicht mehr antreffen. Allerdings gibt es noch 4.0 und gelegentlich 3.x, die komplett ausgeschlossen sind.

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

Das ist nur ein Default-Wert für Felder, deren Kodierung nicht explizit angegeben wurde. Jedes Feld kann seine eigene Kodierung und/oder Kollation haben. Und die ist am Ende maßgebend.

echo "$verabschiedung $name";