Bestehendes Projekt auf UTF 8 ändern

Fragen/Tipps allgemeiner Art.

Bestehendes Projekt auf UTF 8 ändern

Beitragvon rowar » 25. Aug 2009, 08:51

Hallo alle zusammen,
ich würde gerne mein bestehendes Redaxo Projekt auf utf8 umstellen. Was muss ich tun?

Ich habe mich mal rangetastet und im Backend unter "system" auf "de_de_utf8" umgestellt, jedoch sind dann im Backend bei den Artikeln alle Umlaute als komische Zeichen dargestellt. Habe die Einstellung gleich wieder rückgängig gemacht.

Mich würde nun interessieren wie ich vorgehen muss, wenn ich nachträglich das Zeichenformat ändern will.
Benutzeravatar
rowar
 
Beiträge: 33
Registriert: 15. Mär 2007, 18:55

Beitragvon Jan.Kristinus » 25. Aug 2009, 10:30

Hallo,

jetzt laeuft alles auf utf8, was aber auch heisst, dass die bisherigen iso-1 zeichen z.t. falsch angezeigt werden.

das beste ist, du laesst ein skript über die datenbank laufen und wandelst alles in utf8 um. schau mal im wiki, ich glaube da gibt es sowas.

lg

jn
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Benutzeravatar
Jan.Kristinus
Admin
 
Beiträge: 1928
Registriert: 24. Aug 2004, 21:11
Wohnort: Frankfurt

Beitragvon Xong » 25. Aug 2009, 11:56

Hallo Jan!
Jan.Kristinus hat geschrieben:das beste ist, du laesst ein skript über die datenbank laufen und wandelst alles in utf8 um. schau mal im wiki, ich glaube da gibt es sowas.
Das Problem dabei ist, dass künftige Daten aber immer noch falsch in die Datenbank gespeichert werden, da der von mir angesprochene Bug auch in der neuesten Entwicklerversion (SVN-Version aus dem Ordner "trunk") immer noch existiert.

Kann man die auskommentierte Zeile 46 aus der Datei /redaxo/include/classes/class.rex_sql.inc.php fest in die neueste Version einbauen?
Wieso ist diese Zeile überhaupt auskommentiert?
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1560
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Beitragvon zehbaeh » 25. Aug 2009, 12:04

Neben der von Xong angesprochenen Unzulänglichkeit ist ausserdem zu beachten
das ein Statement wie
"ALTER TABLE %tabelle% CONVERT TO CHARACTER SET utf8"
ggf. dazu führt das MySQL den Datentype der Spalten ändert. Dies trifft dann zu wenn die resultierenden UTF-8 Daten nicht mehr in selbige passen würden.
zehbaeh
 
Beiträge: 563
Registriert: 17. Okt 2006, 10:52
Wohnort: Solingen

Beitragvon rowar » 25. Aug 2009, 12:53

Also wenn ich das jetzt richtig verstanden habe Funktioniert das nicht mit der Version 4.1 und mit 4.2.x nur zum Teil, wenn ich selbst Hand am Code anlege.
Benutzeravatar
rowar
 
Beiträge: 33
Registriert: 15. Mär 2007, 18:55

Beitragvon Xong » 25. Aug 2009, 14:01

rowar hat geschrieben:Also wenn ich das jetzt richtig verstanden habe Funktioniert das nicht mit der Version 4.1 und mit 4.2.x nur zum Teil, wenn ich selbst Hand am Code anlege.
Was soll da nicht funktionieren?
Redaxo läuft definitiv mit UTF-8. Und auch die Umstellung ist kein Problem.

Wenn du möchtest, dass ich dir ein bestehendes System nach UTF-8 konvertiere, mache ich das auch. Das ist ´ne Sache von 10 Minuten. =)

Ich würde wie folgt vorgehen:
  1. Ändern der class.rex_sql.inc.php.
  2. Redaxo auf UTF-8 umstellen.
  3. Datenbank mit alter Kodierung exportieren und utf8-kodiert wieder einspielen.
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1560
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Beitragvon rowar » 25. Aug 2009, 14:21

Mhh ist mir zu heiß auf dem laufenden System werd wohl erst ein Testsystem aufsetzen und es dort testen. Ist das Skript aus dem Wiki noch gültig für 4.1?

@Xong: Genau das wollte ich hören :)
Benutzeravatar
rowar
 
Beiträge: 33
Registriert: 15. Mär 2007, 18:55

Beitragvon zehbaeh » 25. Aug 2009, 15:13

Ich habe das folgende Script als "Pseudo-Addon" (convert) grad mal auf einer 4.2 ISO Testinstallation laufen lassen und keine Fehler festestellen können.
addons/convert/install.inc.php
Code: Alles auswählen
<?php
$sql    = new rex_sql();
$tables = $sql->getArray('SHOW TABLES', MYSQL_NUM);
while(!(empty($tables) || $sql->getError()))
{
    $sql->setQuery(sprintf("ALTER TABLE `%s` CONVERT TO CHARACTER SET utf8", current(array_shift($tables))));
}
if($sql->getError())
{
    $REX['ADDON']['installmsg'][basename(dirname(__FILE__))] = htmlspecialchars($sql->getError());
}

PS: Das installiert natürlich nicht wirklich was.
"Es wurde kein Grund angegeben" sollte als "Fehler" gemeldet werden.
zehbaeh
 
Beiträge: 563
Registriert: 17. Okt 2006, 10:52
Wohnort: Solingen

Re: Bestehendes Projekt auf UTF 8 ändern

Beitragvon echi » 27. Jan 2012, 23:48

Hallo Xong,
hallo Forum,

obwohl der Thread nun auch schon ein paar Tage alt ist, häng ich mich mal hier rein, denn der Betreff passt so gut :D

Ich will das Community Addon installieren, aber das lässt sich nur installieren, wenn Redaxo auf utf-8 eingestellt ist.

Also dachte ich mir, ich stelle mein Redaxo eben mal um.
Ich hab mich vorher hier im Forum umgeschaut und nachdem ich dachte, jetzt hätte ich mich schlau gemacht, hab ich wie folgt umgestellt:

    1. Prüfen, ob in der class.rex_sql.inc.php die Zeile nicht auskommentiert ist =>Hier war aber nichts zu änndern.
    2. Unter System auf utf-8 umgestellt
    3. Den Meta Tag "Charset" im Template auf utf-8 geändert
    4. Datenbank mit dem Skript von Xong im Beitrag über mir konvertiert (also mit ...ALTER TABLE ...CONVERT TO CHARACTER SET utf8)

Die Folge war dann, dass mein Browser (Firfox & Opera) die Umlaute trotzdem falsch anzeigen :x
Gut, ich kann meinen Browser ja manuell auf utf-8 umstellen und die Anzeige stimmt. Aber das können ja meine Besucher nicht alle machen :?: :!:

Ich habe dann die Schritte von oben wieder rückgängig gemacht bzw. den Dump von der Datenbank zurückgeschrieben.

Wie kann ich auf utf-8 umstellen?
Wer kann mir helfen :?: :?: :?:

Grüße
echi
Grüße
echi

REDAXO: 4.3.2, PHP: 5.2.17, MySQL: 5.0.77
Benutzeravatar
echi
 
Beiträge: 75
Registriert: 15. Aug 2011, 10:31
Wohnort: Engstingen

Re: Bestehendes Projekt auf UTF 8 ändern

Beitragvon jeandeluxe » 28. Jan 2012, 01:37

echi hat geschrieben:Wie kann ich auf utf-8 umstellen?

Der thread ist alt, die Anleitungen bzw. scripte auch, bzw. treffen nicht dein Thema. Wenn ich deine sig richtig lese, dann läuft deine Seite aktuell mit 4.3.2 als ISO, richtig? Probier mal folgendes:

1. exportier den DB dump über import/export..
2. kontrolliere stichpunktartig die Umlaute im dump, konkret in den slices - also den eigentlichen Seiteninhalten - die sollten ok sein (ignorier dabei evtl. kaputte umlaute in code comments), wenn ja:
3. stell in deinem Editor das encoding auf utf-8 um, änder oben in der 3. Zeile die charset Angabe auf utf-8, und speicher den dump.
4. starte ein 4.3.2 setup im utf-8 modus, importiere den dump, änder die charset Angabe im Template..
5 ..knock on wood
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Bestehendes Projekt auf UTF 8 ändern

Beitragvon echi » 30. Jan 2012, 16:00

Hallo,

vielen Dank für die Antwort :D
Leider funktioniert die Umstellung immer noch nicht :cry:
Übrigens sind die Daten in meiner Signatur aktuell.

Ich habe es wie folgt versucht:
    1. DB Dump übers Import Export Addon
    2. Stichprobe der Umlaute => alles Okay
    3. Encoding auf utf-8 umgestellt. Encoding Angabe auch auf utf-8 geändert und gespeichert (Nochmal Stichprobe => alles okay)
    4. Redaxo umgestellt auf utf-8
    5. Encodingangabe in meinem Template geändert auf utf-8
    6. Den neuen utf-8 DB Dump übers Import Export Addon importiert
    => Die Umlaute werden im Frontend immernoch falsch angezeigt! :shock:
Was ich auch absolut nicht verstehe ist, dass in diesem auf utf umgestellten Redaxo auch Umlaute in neu erstellten Artikeln falsch angezeigt werden. :?: :!:

Ich weiß echt nichtmehr weiter.
Kann mir nochmal jemand weiterhelfen?

Grüße
Echi
Grüße
echi

REDAXO: 4.3.2, PHP: 5.2.17, MySQL: 5.0.77
Benutzeravatar
echi
 
Beiträge: 75
Registriert: 15. Aug 2011, 10:31
Wohnort: Engstingen

Re: Bestehendes Projekt auf UTF 8 ändern

Beitragvon jeandeluxe » 30. Jan 2012, 16:07

echi hat geschrieben:
    4. Redaxo umgestellt auf utf-8

Setup machen.. hat schon nen Grund, denn dort wird das generelle encoding der DB gesetzt..
aber eine Sache hab ich vergessen: in dem dump den du auf utf8 encoding umgestellt hast auch alle encoding Angaben für tables entsprechend ändern.. sprich von
Code: Alles auswählen
... DEFAULT CHARSET=latin1;
nach
Code: Alles auswählen
... DEFAULT CHARSET=utf8;
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Bestehendes Projekt auf UTF 8 ändern

Beitragvon echi » 30. Jan 2012, 16:30

Hi Jeandeluxe,

vielen Dank für die superschnelle Antwort, damit hätte ich ja garnicht gerechnet :D

Daran, dass man das Charset für jede Tabelle festlegen muss hab ich absolut nicht gedacht.
Macht aber Sinn...

Ich werde die Umstellung dann heute abend mal versuchen. Jetzt sind auf der Seite die "Inhaltsersteller" aktiv. Aber ich freu mich schon auf heute abend.... :)

Grüße
echi
Grüße
echi

REDAXO: 4.3.2, PHP: 5.2.17, MySQL: 5.0.77
Benutzeravatar
echi
 
Beiträge: 75
Registriert: 15. Aug 2011, 10:31
Wohnort: Engstingen

Re: Bestehendes Projekt auf UTF 8 ändern

Beitragvon jeandeluxe » 31. Jan 2012, 10:53

echi hat geschrieben:Daran, dass man das Charset für jede Tabelle festlegen muss hab ich absolut nicht gedacht.
Macht aber Sinn...

Jein.. bzw. eigentlich brauchts das nicht, denn wenn man wirklich ein Setup im utf8 Modus durchläuft, dann werden die zu importierenden dumps hinsichtlich charset Angaben für tables on thy fly gepatcht.. ich hatte es bloß nicht mehr so 100% auf dem Zettel und war dann etwas unsicher als du sagtest es ginge nicht. ;) D.h.: so wie ichs initial in meiner Auflistung beschrieben habe paßts.. nur muß mans eben wirklich so machen.. wenn man kein Setup durchläuft funktionierts nicht.
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Bestehendes Projekt auf UTF 8 ändern

Beitragvon Markus.Staab » 31. Jan 2012, 13:19

Hi!

echi hat geschrieben:Daran, dass man das Charset für jede Tabelle festlegen muss hab ich absolut nicht gedacht.
Macht aber Sinn...


Ich meine man kann das Charste in MySQL auch an der DB Instanz festlegen, dann sollte es für alle Tabellen autom. angenommen werden (ausser die Tabellen wurden explizit mit anderem Charset angelegt).

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Nächste

Zurück zu Allgemeines [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste