|
Da ich gerade selber das Problem hatte, und es mich einen Tag und ein Gespräch mit der Hotline gekostet hat herauszufinden, woran es liegt, hier kurz die Lösung.
[Problem] Seite bei der T-Com (webpage.t-com.de). Umlaute in Titeln und Namen bei Sections (Bereichen), Categories (Kategoriem) und Content Items (Artikeln) werden nicht gespeichert, sondern entweder gelöscht oder in Fragezeichen umgewandelt.
[Lösung]
includes/database.php:
Zeile 103: //@mysql_query("SET NAMES 'utf8'", $this->_resource);
ändern in:
Zeile 103: mysql_query("SET NAMES 'latin1'", $this->_resource);
Für eine genauere Beschreibung bitte weiterlesen.
[Analyse] Standartmässig arbeitet die MySQL Datenbank bei der T-Com mit utf8, Joomla dagegen mit latin1. Bei utf8 können Umlaute direkt gespeichert werden, bei latin1 werden sie durch tags ersetzt (so wie ü etc.)
Man kann natürlich Joomla so modifizieren, dass es auch mit utf8 arbeitet, jedoch ist es eigentlich normalerweise nicht darauf ausgelegt. Die Änderungen in Joomla selber sind klein, aber es ist ungewiss, wie sich Zusatzkomponenten verhalten. Nachdem ich das soweit festgestellt hatte, war die Lösung nahe: Die Datenbank auf latin1 umstellen! Da das Datenbankmenü diese Möglichkeit nicht bietet, habe ich die SQL Eingabe genutzt und dort:
ALTER DATABASE db_name DEFAULT CHARACTER SET latin1;
und
ALTER DATABASE db_name DEFAULT COLLATE latin1_swedish_ci;
was allerdings NICHT funktioniert, da ich nicht die Rechte dafür besitze.
Also nochmal ohne DEFAULT:
ALTER DATABASE db_name DEFAULT CHARACTER SET latin1;
und ALTER DATABASE db_name DEFAULT COLLATE latin1_swedish_ci;
Das funktioniert zwar und die Tabelleneinträge der nachfolgenden Joomlainstallation hatten nun auch diese Codierung, jedoch wurden neue Einträge weiterhin in utf8 abgelegt.
Also funktinieren Umlaute immer noch nicht.
[Lösung] Danke an die Hotline (im Zweifelsfall darum bitten, dass der Mitarbeiter nicht bei seinem Kollegen nachfragt, sondern dass man direkt von dem kompetenten Kollegen angerufen wird )
Da die Datenbank standartmässig immernoch alles in utf8 speichert, muss man ihr vor jedem Datenbankzugriff sagen, dass man bitte in latin1 speichern möchte. Das ist nicht so schwierig, wie man vielleicht befürchten könnte, da die Joomlaentwickler so etwas allerdings in umgekehrter Richtung schon vorhergesehen haben. In der "database.php" im "includes" Verzeichnis findet sich eine auskommentierte Zeile:
Zeile 103: //@mysql_query("SET NAMES 'utf8'", $this->_resource);
diese ändern in:
Zeile 103: mysql_query("SET NAMES 'latin1'", $this->_resource);
Voilà! Da sämtliche Datenbankzugriffe in Joomla über diese zentrale Stelle laufen, wird der Datenbank nun vor jeden Zugriff mitgeteilt, dass man die Daten im latin1 Format speichern möchte.
|