Hallo Chris,

zunächst einmal vielen herzlichen Dank für deine schnelle und kompetente
Rückantwort. Allerdings muss ich keine DB-Konvertierung durchführen, da
TYPO3 durch Magento abgelöst wird.

Da aber die Warenwirtschaft nicht mit allen Umlauten klar kommt, muss ich
alle Umlaute in Entities umwandeln - also nicht die Datenbank selbst. Meine
Überlegung war daher, nach genau diesen Zeichen zu suchen und diese dann in
der Datenbank direkt zu ersetzen (bevor die Felder in die Warenwirtschaft
exportiert werden).

Nebenbei:
Es geht um die Artikel- und Produktdaten der Extension commerce. Dessen
Felder (und nur diese) brauche ich. Daher auch mein Skript, welches in einer
dieser DB-Tabellen Daten verändert ;)!

Viele Grüße

Björn

-----Ursprüngliche Nachricht-----
Von: typo3-german-boun...@lists.typo3.org
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Chris Wolff -
AERTiCKET AG
Gesendet: Dienstag, 9. Dezember 2014 11:38
An: German TYPO3 Userlist
Betreff: Re: [TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via
PHP-Skript

Hallo Björn,
wenn deine daten wirklich utf-8 sind ist alles fein.

Ich hab mal zwei scripte als gist auf github gestellt dich ich für die
datenbank convertierung nutze.

Das erste fixted einfach nur die tabellen. Wo sie noc nicht utf-8 weil
(collate)
https://gist.github.com/wolffc/8a0a9cebeb980afcf388

das zweite exportiert die datenbank als latin1 und reimportiert sie als
utf-8 das ist nützlich falls du utf-8 daten in deine latin1 datenbank
geschrieben hast.
Mit etwas abwandelung kannst du das natürlich auch für andere encodings
nehmen.
https://gist.github.com/wolffc/108cf972be3b94be5d85


gruss chris



-----Ursprüngliche Nachricht-----
Von: typo3-german-boun...@lists.typo3.org
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Björn Hahnefeld
Gesendet: Dienstag, 9. Dezember 2014 11:09
An: typo3-german@lists.typo3.org
Betreff: [TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via
PHP-Skript

Hallo zusammen,

 

ich habe hier eine TYPO3 4.4.13-Installation vor mir. Die Daten in den
MySQL-Tabellen sind alle eine    utf8_general_ci-Kollation. Wie die Daten
tatsächlich abgespeichert werden, habe ich leider noch nicht im phpMyAdmin
heraus gefunden.

 

Allerdings möchte ich alle Sonderzeichen und Umlaute (auch die CZ und PL wie
beispielsweise "Ć" umwandeln. Für den latin1-Zeichensatz ist das kein
Problem, denn dafür gibt es ja bereits einen PHP-Befehl (mit dem ich einige
Zeichen ausgenommen habe, damit HTML-Formatierungen nicht zerstört werden) -
nämlich get_html_translation_table.

 

Allerdings werden mir die PL- und CZ-Sonderzeichen nicht konviertiert. Wenn
ich dann einen Blick in das SQL-Statement werfe, werden diese einfach nicht
umgewandelt. Das Skript selbst ist als UTF-8 abgespeichert. Hier einmal mein
Skript. Vielleicht hat jemand eine gute Idee, woran das liegen könnte?

 

--

<?php

 

                // Errors

                error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

                ini_set("display_errors", 1);

                

                // Einstellungen

                $list = get_html_translation_table(HTML_ENTITIES);

                unset($list['<']);

                unset($list['>']);

                unset($list['"']);

                unset($list['&']);

                $list['Ć'] = '&#262;'; // wird nicht umgewandelt und
vermutlich auch nicht als solches Zeichen gefunden.

                $list['ć'] = '&#263;'; // wird nicht umgewandelt und
vermutlich auch nicht als solches Zeichen gefunden.

                $list['Ś'] = '&#346;'; // wird nicht umgewandelt und
vermutlich auch nicht als solches Zeichen gefunden.

                $list['ś'] = '&#347;'; // wird nicht umgewandelt und
vermutlich auch nicht als solches Zeichen gefunden.

 

                //var_dump($list);         

                

                $search = array_keys($list);

                $values = array_values($list);    

 

                // Konvertierung

                $typo3_db = mysqli_connect("localhost", "typo3", "password",
"typo3");

                if(!$typo3_db)

                {

                  exit("Verbindungsfehler: " . mysqli_connect_error());

                }

                

                //$tx_commerce_articles_entities = mysqli_query($typo3_db,
"SELECT * FROM tx_commerce_articles_entities WHERE deleted=0 AND hidden=0
AND article_type_uid=1");

                $tx_commerce_articles_entities = mysqli_query($typo3_db,
"SELECT * FROM tx_commerce_articles_entities WHERE deleted=0 AND hidden=0
AND article_type_uid=1 AND uid=23534");

                while($row =
mysqli_fetch_object($tx_commerce_articles_entities))

                {

                               $title = str_replace($search, $values,
$row->title);

                               $description_extra = str_replace($search,
$values, $row->description_extra);

                               $tx_nalmultitest_tests = str_replace($search,
$values, $row->tx_nalmultitest_tests);

 

                               $update_sql = "UPDATE
tx_commerce_articles_entities SET title='" . $title . "',
description_extra='" . $description_extra . "', tx_nalmultitest_tests='" .
$tx_nalmultitest_tests . "' WHERE uid='" . $row->uid . "'";

                               mysqli_query($typo3_db, $update_sql);

 

                               //echo mysqli_errno($typo3_db) . ": " .
mysqli_error($typo3_db) . "\n";

                               

                               echo $update_sql;

                }

 

?>

--

 

Viele Grüße

 

Björn

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an