PHP UTF-8 cheatsheet
Jeder kennt´s und hat mit Sicherheit mindestens einmal damit zu Kämpfen gehabt (und kämpft immer noch damit). Es ist sehr ärgerlich und mittlerweile dennoch zu einer wichtigen Sache geworden, wenn´s darum geht, die eigene Webseite in verschiedenen Sprachen anzubieten. Die Rede ist von der Zeichenkodierung UTF-8.
Auf dem Blog von Nick Nettleton, der leider nicht mehr so aktuell ist, werden die wichtigsten Schritte beschrieben, worauf man bei der richtigen Verwendung der Zeichenkodierung UTF-8 achten sollte.
Der Datenbank UTF-8 beibringen
CREATE DATABASE db_name CHARACTER SET utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT COLLATE utf8_general_ci ; ALTER DATABASE db_name CHARACTER SET utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT COLLATE utf8_general_ci ; ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; SET NAMES utf8;
Installation der mbstring Erweiterung für PHP
yum install php-mbstring
bzw.
extension=php_mbstring.dll;
mbstring konfigurieren
mbstring.language = Neutral ; Set default language to Neutral(UTF-8) (default) mbstring.internal_encoding = UTF-8 ; Set default internal encoding to UTF-8 mbstring.encoding_translation = On ; HTTP input encoding translation is enabled mbstring.http_input = auto ; Set HTTP input character set dectection to auto mbstring.http_output = UTF-8 ; Set HTTP output encoding to UTF-8 mbstring.detect_order = auto ; Set default character encoding detection order to auto mbstring.substitute_character = none ; Do not print invalid characters default_charset = UTF-8 ; Default character set for auto content type header
Verwende alle dir zur Verfügung stehenden mbstring Funktionen
mail() -> mb_send_mail() strlen() -> mb_strlen() etc.
HTML entities entfernen
function html_encode($var) { return htmlentities($var, ENT_QUOTES, 'UTF-8') ; }
Content-type festlegen
<?php header('Content-type: text/html; charset=UTF-8'); ?> <meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
E-Mail-Nachrichten sowie Anhänge konvertieren
Content-type, Daten bei Multipart-Mails sowie Betreff und Nachrichteninhalt und alle möglichen Header wie beispielsweise den MIME-Header richtig stellen.
Hier geht`s weiter zum ausführlicheren Artikel
Probleme mit Umlauten - php.de