TYPO3 auf utf-8 umstellen

Aus Wikizone
Version vom 16. Juli 2010, 10:36 Uhr von 193.196.133.66 (Diskussion)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Links

[[1]]

[[2]]

Überblick / Overview

Verarbeitungskette prüfen vhost.conf - php.ini - my.cnf


Verarbeitungskette

Zuerst mal testen ob in der Verarbeitungskette überall utf-8 für die Übertragung von Daten verwendet wird:


Apache: vhost.conf

AddDefaultCharset UTF-8

Dies ist für TYPO3 Versionen spätestens ab 4.3 nicht notwendig. Wenn man hier im Install Tool [BE][forceCharset] gesetzt hat

Kann einfach getestet werden indem man sich die Header Daten einer Seite mit Firebug oder LiveHTTPTracker anschaut. Darin sollte eine Zeile in dieser Art enthalten sein:

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

PHP: php.ini

default_charset = "utf-8"

Mit dieser Einstellung sollten auch standalone Skripte mit dem richtigen Zeichensatz arbeiten. Man kann in den Skripten aber auch

Außerdem sollte mit der Erweiterung mbstring oder iconf gearbeitet werden. Deren Performance ist wesentlich besser als die Umwandlung über den PHP-Code von TYPO3 (s.u.)

MySQL: my.cnf

Die folgende Einstellung setzt alle System Variablen für Zeichensätze und Kollationen für den MySQL SERVER. Dies betrifft also auch existierende Datenbanken. Deshalb sollte diese Einstellung nur gesetzt werden wenn ausschließlich mit utf-8 Datenbanken gearbeitet wird.

Man benötigt die Einstellung nicht wenn im Install Tool ['SYS']['setDBinit'] gesetzt ist.

TYPO3 Einstellungen

localconf.php

// For backend charset
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';

$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'; 

// For GIFBUILDER support
// Set it to 'iconv' or 'mbstring'
$TYPO3_CONF_VARS['SYS']['t3lib_cs_convMethod'] = 'mbstring';
// For 'iconv' support you need at least PHP 5!
$TYPO3_CONF_VARS['SYS']['t3lib_cs_utils'] = 'mbstring';

Hinweise:

  • Wenn die Datenbank auf UTF-8 gesetzt ist, sollte man nicht die Einstellung $TYPO3_CONF_VARS['SYS']['multiplyDBfieldSize'] setzen. Diese wird nur benötigt, wenn die Datenbank mit latin 1 arbeitet aber der Inhalt utf-8 ist. Außerdem führt die Einstellung des öfteren zu Problemen.
  • $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'; Setzt folgende 3 Einstellungen:
 SET character_set_client = utf8; 
 SET character_set_results = utf8; 
 SET character_set_connection = utf8; 
  • Wenn in phpMyAdmin Sonderzeichen als 2 seltsame Zeichen angezeigt werden, reicht diese Einstellung nicht. Zuerst müssen die Inhaltstabellen konvertiert werden (oder löschen, umstellen, neu eingeben.
  • In manchen Konfigurationen muß man auch noch eine Einstellung für die Sessions machen:
SET NAMES utf8;
SET SESSION character_set_server=utf8;
  • Benutze niemals SET CHARACTER SET utf8; Dies kann große Probleme im TYPO3 Umfeld erzeugen. Mit der Einstellung SET NAMES hat sich das ohnehin erledigt, weil hier eigentlich die wichtigen Einstellungen gemacht werden
  • Wenn [BE][forceCharset] auf utf-8 gesetzt ist (siehe oben), dann wird auch config.renderCharset und config.metaCharset per default mit utf-8 arbeiten. Deshalb müssen hier keine Einstellungen mehr gemacht werden.