[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
UTF-8 Datenbankverbindung - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

UTF-8 Datenbankverbindung

5. Jun 2009, 10:37

Ich habe eben schon darüber geschrieben: http://forum.redaxo.de/sutra68922.html#68922

Allerdings erscheint mir der Bug mittelschwer bis schwer, da sämtliche Daten falsch in der Datenbank landen.

In der Datei class.rex_sql.inc.php findet man ab Zeile 50 folgenden Code:

Code: Alles auswählen

      // connection auf UTF8 trimmen
      if (rex_lang_is_utf8())
      {
        if(function_exists('mysql_set_charset') AND version_compare($REX['MYSQL_VERSION'], '5.0.7', '>='))
          mysql_set_charset('utf8', $this->identifier);
        else
          $this->setQuery('SET NAMES utf8');
      }
Die Kommentar-Striche vor $this->setQuery('SET NAMES utf8'); müssen also entfernt werden.

Wenn die DB-Daten UTF-8-kodiert sind, werden sie sonst nicht richtig übernommen. Warum diese Zeile auskommentiert ist, ist mir ein Rätsel.

Vielleicht könnte man das in der nächsten Version anpassen.
Zuletzt geändert von Xong am 25. Mär 2010, 00:23, insgesamt 2-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

Re: UTF-8 Datenbankverbindung

19. Jun 2009, 19:04

Xong hat geschrieben:Warum diese Zeile auskommentiert ist, ist mir ein Rätsel.
Vielleicht weil das damit gar nicht funktioniert?
Damit das funktioniert, schreibe man nach der angegebenen Zeile folgendes:

Code: Alles auswählen

mysql_set_charset('utf8');
Dies setzt PHP >= 5.2.3 und MySQL >= 5.0.7 vorraus!

Man kann die Zeile mit dem "SET NAMES" drin lassen. Evtl. wird es ja doch irgendwann mal von mysql_query unterstüzt?
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: UTF-8 Datenbankverbindung

20. Jun 2009, 11:07

Hi Koala!
Koala hat geschrieben:
Xong hat geschrieben:Warum diese Zeile auskommentiert ist, ist mir ein Rätsel.
Vielleicht weil das damit gar nicht funktioniert?
Wieso schreibst du etwas, das nicht stimmt?
Koala hat geschrieben:Damit das funktioniert, schreibe man nach der angegebenen Zeile folgendes:

Code: Alles auswählen

mysql_set_charset('utf8');
Dies setzt PHP >= 5.2.3 und MySQL >= 5.0.7 vorraus!
Nur weil es ab einer hohen PHP- und MySQL-Version funktioniert, heißt das nicht, dass man darunter auf UTF-8 verzichten soll.
Koala hat geschrieben:Man kann die Zeile mit dem "SET NAMES" drin lassen. Evtl. wird es ja doch irgendwann mal von mysql_query unterstüzt?
Nochmal für alle: Es wird unterstützt! Mit mysql_query() kann man ein beliebiges SQL-Statement an das DBMS absetzen.
Bei älteren PHP- oder MySQL-Versionen ist SET NAMES also durchaus richtig.

Für die Zukunft wünsche ich mir, dass Redaxo auf die mysqli-Extension umgestellt wird. Das wär wirklich toll und ein Ziel für die Version 5.
Zuletzt geändert von Xong am 22. Jul 2009, 15:38, insgesamt 1-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
wolle65
Beiträge: 13
Registriert: 18. Jun 2009, 22:13
Wohnort: Wehrheim
Kontaktdaten: Website

Re: UTF-8 Datenbankverbindung

20. Jun 2009, 13:58

Xong hat geschrieben:Ich habe eben schon darüber geschrieben: http://forum.redaxo.de/sutra68922.html#68922

Allerdings erscheint mir der Bug mittelschwer bis schwer, da sämtliche Daten falsch in der Datenbank landen.

In der Datei class.rex_sql.inc.php findet man ab Zeile 50 folgenden Code:

Code: Alles auswählen

      // connection auf UTF8 trimmen
      if (rex_lang_is_utf8())
      {
        // $this->setQuery('SET NAMES utf8');
      }
Die Kommentar-Striche vor $this->setQuery('SET NAMES utf8'); müssen also entfernt werden.

Wenn die DB-Daten UTF-8-kodiert sind, werden sie sonst nicht richtig übernommen. Warum diese Zeile auskommentiert ist, ist mir ein Rätsel.

Vielleicht könnte man das in der nächsten Version anpassen.

LG,
Xong

hallo,
habe die entsprechende datei angepasst und upgeloden.
habe den cache inter system geleert bzw. umgestellt auf de_de_utf8...
habe geprüft wie die datenbankeinstellung unter 1&1 ist - ist korrekt.

dennoch werden die umlaute falsch angezeigt?
warum

bspl. meines sandkastens hier:
http://www.propresent-media.com/redaxo/ ... =1&clang=0

was kann ich noch probieren?

gruß
wolfgang
...seit 15.Juni 2009 REDAXO 4.2.1 Fan - also von nichts eine Ahnung ;-)

Torsoe
Beiträge: 9
Registriert: 6. Mai 2008, 14:45

Re: UTF-8 Datenbankverbindung

20. Jun 2009, 15:18

wolle65 hat geschrieben:
hallo,
habe die entsprechende datei angepasst und upgeloden.
habe den cache inter system geleert bzw. umgestellt auf de_de_utf8...
habe geprüft wie die datenbankeinstellung unter 1&1 ist - ist korrekt.

dennoch werden die umlaute falsch angezeigt?
warum

bspl. meines sandkastens hier:
http://www.propresent-media.com/redaxo/ ... =1&clang=0

was kann ich noch probieren?

gruß
wolfgang

du solltest mal das charset von iso-8859-1 auf utf-8 stellen...dann stimmt auch alles

Benutzeravatar
wolle65
Beiträge: 13
Registriert: 18. Jun 2009, 22:13
Wohnort: Wehrheim
Kontaktdaten: Website

Re: UTF-8 Datenbankverbindung

20. Jun 2009, 15:30

Torsoe hat geschrieben: du solltest mal das charset von iso-8859-1 auf utf-8 stellen...dann stimmt auch alles

wo muss ich das machen?
danke

:oops:
...seit 15.Juni 2009 REDAXO 4.2.1 Fan - also von nichts eine Ahnung ;-)

snaft

20. Jun 2009, 15:34

Hi!

Du musst in deinem Standard-Template folgende Zeile bearbeiten:

Code: Alles auswählen

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
indem du "iso-8859-1" durch "utf-8" ersetzt.

Das sollte es gewesen sein.

EDITH: Check mal die Zeilen 230 und 235 in deinem CSS. Da hast du mit margin-left was durcheinandergebracht. Dies nur so am Rande erwähnt. :wink:


Beste Grüße,
Marc

Benutzeravatar
wolle65
Beiträge: 13
Registriert: 18. Jun 2009, 22:13
Wohnort: Wehrheim
Kontaktdaten: Website

20. Jun 2009, 15:49

snaft hat geschrieben:
indem du "iso-8859-1" durch "utf-8" ersetzt.
Das sollte es gewesen sein.
jo, dass wars ;-)

snaft hat geschrieben: EDITH: Check mal die Zeilen 230 und 235 in deinem CSS. Da hast du mit margin-left was durcheinandergebracht. Dies nur so am Rande erwähnt. Wink
an der habe ich etwas "gespielt" ... werde ich wenn ich redaxo verstehe nochmals "angehen" - Danke für den Hinweis.....

Gruß
Wolfgang
...seit 15.Juni 2009 REDAXO 4.2.1 Fan - also von nichts eine Ahnung ;-)

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: UTF-8 Datenbankverbindung

21. Jun 2009, 01:08

Hi,
Xong hat geschrieben: Für die Zukunft wünsche ich mir, dass Redaxo auf die mysqli-Extension umgestellt wird. Das wär wirklich toll und ein Ziel für die Version 5.
REDAXO wird nicht auf mysqli umgestellt werden... als nächstes würde auf jeden Fall PDO eingesetzt werden, da mysqli ja schon wieder "veraltet" ist.

Gruß,
Markus

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

Re: UTF-8 Datenbankverbindung

21. Jun 2009, 09:52

Xong hat geschrieben:Wieso schreibst du etwas, das nicht stimmt?
Hast recht! Richtig muss es heißen, dass die Verwendung von SET NAMES nicht empfohlen wird.
Bei mir funktionierte SET NAMES jedenfalls nicht (MySQL Server Version: 5.0.51a-24+lenny1-log, PHP/5.2.6-1+lenny3 with Suhosin-Patch).
Xong hat geschrieben:Nur weil es ab einer hohen PHP- und MySQL-Version funktioniert, heißt das nicht, dass man darunter auf UTF-8 verzichten soll.
DAS habe ich auch nicht gesagt. Die von mir angegebene Lösung funktioniert laut der PHP-Doku nunmal erst ab den angegebenen Versionen.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: UTF-8 Datenbankverbindung

21. Jun 2009, 11:03

Koala hat geschrieben:
Xong hat geschrieben:Nur weil es ab einer hohen PHP- und MySQL-Version funktioniert, heißt das nicht, dass man darunter auf UTF-8 verzichten soll.
DAS habe ich auch nicht gesagt. Die von mir angegebene Lösung funktioniert laut der PHP-Doku nunmal erst ab den angegebenen Versionen.
Da hast du ja recht. Aber du musst verstehen, dass viele hier (vielleicht auch später) mitlesen, deinen Beitrag sehen und dann sagen: "Oh, da hat sich das Thema UTF-8 für mich jetzt wohl erledigt!"
Da musste ich das einfach in aller Deutlichkeit klarstellen. :roll:
Koala hat geschrieben:Bei mir funktionierte SET NAMES jedenfalls nicht (MySQL Server Version: 5.0.51a-24+lenny1-log, PHP/5.2.6-1+lenny3 with Suhosin-Patch).
Bei Problemen bitte einen eigenen Thread im passenden Subforum öffnen. :P
Zuletzt geändert von Xong am 22. Jul 2009, 15:38, insgesamt 1-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

21. Jun 2009, 11:41

Da das zum Thema passt, bleib ich mal hier.

Habe jetzt zum Testen mal etwas für eine Modulausgabe zusammengestrickt:

Code: Alles auswählen

<pre>
<?php
$_sql = new rex_sql();

echo 'PHP-Version: '; echo phpversion(); echo '<br />';
echo 'MySQL-Version: '; echo $_sql->getServerVersion(); echo '<br />';
echo 'mysql_client_encoding: ';
print_r (mysql_client_encoding($_sql->identifier)); echo '<br />';

$_q = 'SHOW VARIABLES LIKE "%character_set%";';
$_qa = $_sql->setQuery($_q);

echo '<b>SHOW VARIABLES LIKE "%character_set%": </b>'; echo '<br />';
$foo = $_sql->getArray();
foreach ($foo as $key => $val) {
  echo '  '. $val['Variable_name'] .' => '. $val['Value']; echo '<br />';
}

echo '<br /><b>Setze mysql_set_charset:</b>'; echo '<br />';
mysql_set_charset('utf8', $_sql->identifier);
echo 'mysql_client_encoding: ';
print_r (mysql_client_encoding($_sql->identifier)); echo '<br />';

$_q = 'SHOW VARIABLES LIKE "%character_set%";';
$_qa = $_sql->setQuery($_q);

echo '<b>SHOW VARIABLES LIKE "%character_set%": </b>'; echo '<br />';
$foo = $_sql->getArray();
foreach ($foo as $key => $val) {
  echo '  '. $val['Variable_name'] .' => '. $val['Value']; echo '<br />';
}
?>
</pre>
<br /><br />
Die Ergebnisse dieser Abfragen sind etwas verwirrend.

Erster Test:
SET NAMES in rex_sql ist deaktiviert.
Wie zu erwarten war, gibt mir mysql_client_encoding ein latin1 zurück. Die meisten der "character_set*" stehen ebenfalls auf latin1 (was hier soweit ersteinmal OK ist).

Zweiter Test:
SET NAMES in rex_sql ist aktiviert.
mysql_client_encoding liefert wieder ein latin1.
Die meisten der "character_set*" sind nun auf utf8 gesetzt (character_set_server ist weiterhin latin1).

Im zweiten Teil des Testscripts wird mysql_set_charset('utf8'); gesetzt.
Erst danach liefert mir mysql_client_encoding ein utf8.
Hier stimmt etwas mit der Rückgabe von mysql_client_encoding nicht?
Oder was übersehe ich?


Edit
Nach weiteren Tests und der Suche nach Antworten mittels Suchmaschine komme ich zu dem Schluß, dass die Funktion mysql_client_encoding bei mir einen falschen Wert zurückliefert. Werde also eine andere Abfrage verwenden müssen und lieber ganz auf diese Funktion verzichten.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

18. Sep 2009, 16:38

Ich muss nochmal auf diesen Bug hinweisen, der leider immer noch nicht ausgebessert wurde.

Immer wieder taucht dieser Bug auf und macht mir einen Strich durch die Rechnung bzw. kostet unnötige Zeit, weil die Daten in der Datenbank nicht UTF-8 kodiert gespeichert werden.

Gerade sitze ich an einem neuen Suchaddon, dass logischerweise viel mit der Datenbank arbeitet.

Wäre es nicht möglich, diesen Bug wenigstens in der Entwicklerversion (Zeile 53) zu beheben?

Bitte! :cry:
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
ynamite
Beiträge: 143
Registriert: 26. Jan 2007, 14:59
Wohnort: baden
Kontaktdaten: Website

31. Mär 2010, 18:35

Xong hat geschrieben:
Wäre es nicht möglich, diesen Bug wenigstens in der Entwicklerversion (Zeile 53) zu beheben?

Bitte! :cry:
da muss ich Xong absolut zustimmen, wie schwierig ist es denn bitteschön das zu beheben??? Und bitte nicht nur in der Entwicklerversion! ich sitze hier seit fast 4 Stunden und versuche das Problem zu behen, durchsuche Foren, das gesamte Internet usw. weil ich anfangs sogar dachte das Problem sei bei meinem Hoster usw. echt, da krieg ich en riesen Hals... Ausserdem ist der Fehler nun ja wirklich rasch behoben.

Und das Argument das die Daten mit Redaxo ja richtig dargestellt werden, zählt für mich nicht. Diese Problem wurde schon zig mal im Forum angesprochen seit nun mehr 2 Jahren aber immer irgendwie tot geschwiegen. Bis jetzt hat sich meines Wissens (ich lasse mich auch gern belehren) niemand vom Redaxo-Team dazu geäussert oder annerkannt das es sich schlichtweg um einen Bug handelt. Stattdessen wird behauptet dass das alles korrekt sei und keine Probleme macht. So ein Mist!

Entschuldigung wenn ich mich ein bisschen angepisst fühle aber in der Regel kann man micht euch gut reden, ihr seid sehr hilfsbereit und freundlich aber wieso das man hierzu keine Infos findet oder einfach ganz klar gesagt wird was Sache ist, kann und will ich nicht verstehen...

Nichts für ungut
gruss
y
MASSIF Webdesign Studio

Benutzeravatar
nitzer
Beiträge: 229
Registriert: 16. Okt 2006, 22:53
Wohnort: Erkrath
Kontaktdaten: ICQ Website

1. Apr 2010, 10:03

kann das leider nur bestätigen. ich muß grad mit einigen seiten auf einen neuen server umziehen und habe arge probleme damit das zu laufen zu kriegen. bisher kommen keine umlaute richtig rüber :-(

Zurück zu „Sonstiges“