Hallo,
ich hab einige Probleme mit internationalen Zeichensätzen.
Wenn jemand am anderen der Welt zB ins GB schreibt, wird aus dem Eintrag ein unleserliches Kauderwelsch erzeugt.
In der näheren Analyse bin ich auf den Umstand gestossen mit den Zeichensätzen und der Collation.
Obwohl ich utf8 deklarierte sind einige Einstellungen nicht durch mich änderbar.
bei der Anzeige in myAdmin zeigen sich folgende Einstellungen der DB:
character set client utf8
(Globaler Wert) latin1
character set connection utf8
(Globaler Wert) latin1
character set database latin1
character set filesystem binary
character set results utf8
(Globaler Wert) latin1
character set server latin1
character set system utf8
character sets dir /usr/share/mysql/charsets/
collation connection utf8_unicode_ci
(Globaler Wert) latin1_german2_ci
collation database latin1_german2_ci
collation server latin1_german2_ci
können besonders die dick markierten die Ursache sein?
Auf meine Anfrage hin erhielt ich folgende Aussage vom Provider, die sich mal alles näher angeschaut haben:
Wir gehen davon aus, dass es mit nicht multi-byte festen Funktionen zusammen, die das CMS nutzt. Generell ist in solchen Zeichensatz-Fällen bei der Datenbank darauf zu achten, dass die Datenbank den richtigen Zeichensatz nutzt und die Applikation per 'SET NAMES' den richtigen/ erwarteten Zeichensatz der Datenbank mitteilt. Bitte beachten Sie, dass wir hierfür keinen Support leisten können.
also laut Provider Fehler im Contenido.
Gibt es dafür eine Lösungsmöglichkeit?
SQL Collation Fragen
Re: SQL Collation Fragen
Ich scheine das gleiche Problem zu haben und habe hier diesen Artikel gefunden: http://forum.contenido.org/viewtopic.php?t=17309 Bei der Lektüre des Artikel bzw. dessen Umsetzung habe ich ein Verständnisproblem.
In besagter Datei db_mysql.inc habe ich folgendes geschrieben:
Ab Zeile 92
Wenn ich die Frontendseite neu lade werden die Sonderzeichen richtig dargestellt, allerding bekomme ich auch folgende Fehlermeldung, die ich auch mit verschienden Try-and-Error Versuchen nicht beseitigt bekommen:
Danke und schöne Grüsse
yui
In besagter Datei db_mysql.inc habe ich folgendes geschrieben:
Ab Zeile 92
Code: Alles auswählen
public: connection management */
function connect($Database = "", $Host = "", $User = "", $Password = "") {
/* Handle defaults */
if ("" == $Database)
$Database = $this->Database;
if ("" == $Host)
$Host = $this->Host;
if ("" == $User)
$User = $this->User;
if ("" == $Password)
$Password = $this->Password;
/* Das hier ist neu */
mysql_query('SET character_set_client = utf8');
mysql_query('SET character_set_results = utf8');
mysql_query('SET character_set_connection = utf8');
Weiss jemand Rat?Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /htdocs/xxx/conlib/db_mysql.inc on line 99
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /htdocs/xxx/conlib/db_mysql.inc on line 99
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /htdocs/xxx/conlib/db_mysql.inc on line 100
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /htdocs/xxx/conlib/db_mysql.inc on line 100
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /htdocs/xxx/conlib/db_mysql.inc on line 101
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /htdocs/xxx/conlib/db_mysql.inc on line 101
Warning: Cannot modify header information - headers already sent by (output started at /htdocs/xxx/conlib/db_mysql.inc:99) in /htdocs/xxx/ivg/front_content.php on line 244
Danke und schöne Grüsse
yui
Ich weiß, dass ich nichts weiß. Sokrates
-
- Beiträge: 3626
- Registriert: Di 12. Okt 2004, 20:00
- Wohnort: Voerde (Niederrhein)
- Kontaktdaten:
Re: SQL Collation Fragen
An der Stelle passt das nicht so gut, da zu dem Zeitpunkt ja noch keine DB-Verbindung aufgebaut ist. Ich hätte das grundsätzlich eher in der Datei "conlib/local.php" umgesetzt. Einfach hinter:
folgendes ergänzen:
Code: Alles auswählen
// TODO check this out
// HerrB: Checked and disabled. Kills umlauts, if tables are latin1_general.
// try to use the new connection and get the needed encryption
//$this->query("SET NAMES 'utf8'");
Code: Alles auswählen
$this->query("SET character_set_client = utf8");
$this->query("SET character_set_results = utf8");
$this->query("SET character_set_connection = utf8");