[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
MySQL/PHP: Umlautproblem beim Kopieren - 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/
Tobias Krais
Beiträge: 500
Registriert: 2. Okt 2006, 23:16
Wohnort: Lörrach
Kontaktdaten: Website

MySQL/PHP: Umlautproblem beim Kopieren

29. Jan 2013, 02:05

Hi zusammen,

ich komme hier gerade nicht weiter und hoffe auf eure Hilfe. Ich habe auf der Webseite http://www.kaltenbach.com eine Maschinendatenbank. Die Beschreibungen der Maschinen und Kategorien liegen in vielen Sprachen vor, u.a. meine Problemkinder Russisch, Polnisch und Tschechisch.

Ich organisiere die Daten in der DB im Hinblick auf die 3. Normalform und Mehrsprachigkeit neu. Dazu muss ich Daten von einer Tabelle in eine andere kopieren. Mit einem SELECT hole ich die Daten aus der DB. Dann füge ich die Daten in ein INSERT zusammen.

Code: Alles auswählen

$query_insert = "INSERT INTO ". $REX['TABLE_PREFIX'] ."d2u_ktb_maschinen_kategorien_lang SET kategorie_id = '". $result_kategorien -> getValue("pid") ."', clang_id = '". $result_kategorien -> getValue("clang") ."', name = '". utf8_decode(mysql_real_escape_string($result_kategorien -> getValue("name"))) ."', status = '". utf8_decode($status) ."'"; 
Das funktioniert normal auch sehr gut. Heraus kommt:

Code: Alles auswählen

INSERT INTO rex_d2u_ktb_maschinen_kategorien_lang SET kategorie_id = '7', clang_id = '1', name = 'Bandsägen (Gehrung)', status = 'online'
Nur manchmal macht es Probleme:

Code: Alles auswählen

INSERT INTO rex_d2u_ktb_maschinen_kategorien_lang SET kategorie_id = '7', clang_id = '8', name = 'лен�?о�?нопил�?н�?е с�?анки (�?езка под �?глом)', status = 'offline'
In letzerem Fall werden nur die ersten drei russischen Buchstaben im Feld "name" in die DB geschrieben. Danach ist Schluss.

Ich habe inzwischen keine Idee mehr, was ich tun soll. Nicht mal mehr was ich Dr. Google fragen kann. Könnt ihr mir eine Richtung weisen?

Liebe Grüße,

Tobias

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: MySQL/PHP: Umlautproblem beim Kopieren

29. Jan 2013, 02:23

Also das ein Teil der kyrillischen Zeichn ok ist und ein anderer nicht ist merkwürdig. Sind die Daten in der orig. table noch ok? Welches REX? utf8/iso? Wie ist das charset der beteiligten tables?

Sehs gerade: warum das utf8_decode() ?
vg, Jan

Tobias Krais
Beiträge: 500
Registriert: 2. Okt 2006, 23:16
Wohnort: Lörrach
Kontaktdaten: Website

Re: MySQL/PHP: Umlautproblem beim Kopieren

29. Jan 2013, 11:41

Hi Jan,
jdlx hat geschrieben:Also das ein Teil der kyrillischen Zeichn ok ist und ein anderer nicht ist merkwürdig. Sind die Daten in der orig. table noch ok?
Gute Frage. Also wenn ich die Daten auf der Webseite ausgebe werden sie korrekt angezeigt. Wenn ich sie im PHPMyAdmin anschaue sieht das furchtbar aus...
jdlx hat geschrieben:Welches REX? utf8/iso? Wie ist das charset der beteiligten tables?
Rex 4.2 mit UTF-8 Bug. Wenn ich die Daten in ein Rex 4.4.1 ordnungsgemäß exportiere tritt aber der selbe Fehler auf. Die Ausgabe auf der Webseite ist UTF-8. Allerdings ist das Charset der Tabellen latin1.
jdlx hat geschrieben:Sehs gerade: warum das utf8_decode() ?
Wenn ich das nicht verwende werden die Daten recht kryptisch in die DB gespeichert, z.B. so: "Сварочный робот". Genau so steht es auch in der Originalen DB drin. Der Vorteil: der String wird komplett in die DB gespeichert. Im PHPMyAdmin ist die Anzeige aber eine Katastrophe und ich kann mir vorstellen, dass das nachher in der Ausgabe nicht besser wird. Die Ausgabe muss ich noch programmieren und konnte es noch nicht testen.

Liebe Grüße,

Tobias

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: MySQL/PHP: Umlautproblem beim Kopieren

29. Jan 2013, 18:09

Tobias Krais hat geschrieben:Rex 4.2 mit UTF-8 Bug. Wenn ich die Daten in ein Rex 4.4.1 ordnungsgemäß exportiere tritt aber der selbe Fehler auf.
"ordnungsgemäß".. beschreib mal konkret.
Tobias Krais hat geschrieben:Die Ausgabe auf der Webseite ist UTF-8. Allerdings ist das Charset der Tabellen latin1.
Nach einem 4.3/4.4 import solltest du eigentlich nur noch utf8 tables haben, bzw. utf8 als default charset der DB.
Tobias Krais hat geschrieben:Im PHPMyAdmin ist die Anzeige aber eine Katastrophe ..
Weil die multibyte Zeichen in singlebytes zerlegt sind. Deswegen für utf8 bei einem REX update der notwendige import Zwischenschritt wo man den 4.2 utf8 dump (den 4.2 - weil sich der Fehler dabei aufhebt - als korrektes multibyte utf8 exportiert) in 4.3 @setup importiert und ab da korrektes multibyte utf8 in der DB hat.
vg, Jan

Tobias Krais
Beiträge: 500
Registriert: 2. Okt 2006, 23:16
Wohnort: Lörrach
Kontaktdaten: Website

[SOVED] Re: MySQL/PHP: Umlautproblem beim Kopieren

30. Jan 2013, 01:26

Hi Jan,
jdlx hat geschrieben:
Tobias Krais hat geschrieben:Rex 4.2 mit UTF-8 Bug. Wenn ich die Daten in ein Rex 4.4.1 ordnungsgemäß exportiere tritt aber der selbe Fehler auf.
"ordnungsgemäß".. beschreib mal konkret.
1. Export aus Redaxo 4.2 mittels "Import/Export Addon"
2. Import per PHPMyAdmin
3. Redaxo 4.4.1 Dateien über Redaxo 4.2 kopieren (vorher die Dateien master.inc.php, addons.inc.php, plugins.inc.php, clang.inc.php manuell anpassen)
4. SQL Änderungen für Redaxo 4.4.1 vornehmen.
5. Redaxo Cache löschen.

Und fertig ist das Upgrade auf 4.4.1
jdlx hat geschrieben:Nach einem 4.3/4.4 import solltest du eigentlich nur noch utf8 tables haben, bzw. utf8 als default charset der DB.
Stimmt. Ich hatte ein wenig rumgespielt. Warum genau weiß ich nicht mehr. Und nachdem ich obige Schritte nochmals wie wiederholt habe funktioniert es. Das Umlautproblem ist gelöst. Jetzt braucht es auch kein utf8_decode() mehr.

Jan, vielen Dank! Genau so einen Tipp habe ich gebraucht.

Vielen, vielen Dank!

Liebe Grüße,

Tobias

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: MySQL/PHP: Umlautproblem beim Kopieren

30. Jan 2013, 01:35

Bene.. sollte es dir deine Metainfos bei der Aktion zerlegt haben - was recht oft vorkommt - dann nimm das zum reparieren: https://github.com/jdlx/metafix/tags
vg, Jan

Tobias Krais
Beiträge: 500
Registriert: 2. Okt 2006, 23:16
Wohnort: Lörrach
Kontaktdaten: Website

Re: MySQL/PHP: Umlautproblem beim Kopieren

30. Jan 2013, 01:45

Hi Jan,
jdlx hat geschrieben:Bene.. sollte es dir deine Metainfos bei der Aktion zerlegt haben - was recht oft vorkommt - dann nimm das zum reparieren: https://github.com/jdlx/metafix/tags
man, das ist mir gar nicht aufgefallen. Dein Plugin ist 1a! Ich glaube nachher kann ich gut schlafen ;-)

Nochmals vielen Dank!

Happy Greetings,

Tobi

Zurück zu „Sonstiges“