[TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via PHP-Skript
Chris Wolff - AERTiCKET AG
cwolff at aer.de
Tue Dec 9 11:37:45 CET 2014
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-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Björn Hahnefeld
Gesendet: Dienstag, 9. Dezember 2014 11:09
An: typo3-german at 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['Ć'] = 'Ć'; // wird nicht umgewandelt und vermutlich auch nicht als solches Zeichen gefunden.
$list['ć'] = 'ć'; // wird nicht umgewandelt und vermutlich auch nicht als solches Zeichen gefunden.
$list['Ś'] = 'Ś'; // wird nicht umgewandelt und vermutlich auch nicht als solches Zeichen gefunden.
$list['ś'] = 'ś'; // 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 at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
More information about the TYPO3-german
mailing list