MySQL - Konvertieren Sie latin1-Zeichen in einer UTF8-Tabelle in UTF8
Nur heute habe ich gemerkt, dass ich fehlte, diese in meinem PHP-Skripte:
mysql_set_charset('utf8');
Alle meine Tabellen sind InnoDB, collation "utf8_unicode_ci", und alle meine VARCHAR-Spalten sind "utf8_unicode_ci". Ich habe mb_internal_encoding('UTF-8');
auf meine PHP-Skripte, und alle meine PHP-Dateien werden als UTF-8 kodiert.
So, bis jetzt, jedes mal, wenn ich "EINFÜGEN" etwas mit diakritischen Zeichen, Beispiel:
mysql_query('INSERT INTO `table` SET `name`="Jáuò Iñe"');
'Name' Inhalt wäre in diesem Fall: Jáuò Iñe
.
Da ich der festen charset von PHP und MySQL, neue Einsätze werden nun speichern richtig. Allerdings möchte ich alle zu beheben, die älteren Zeilen, die das "Durcheinander" im moment. Ich habe versucht, viele Dinge schon, aber es bricht immer die Saiten auf der ersten "illegalen" Charakter. Hier ist meine aktuelle code:
$m = mysql_real_escape_string('¿<?php echo "¬<b>\'PHP á (á)ţăriîş </b>"; ?> ă-ţi abcdd;//;ñç´พดแทฝใจคçăâξβψδπλξξςαยนñ ;');
mysql_set_charset('utf8');
mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');
mysql_set_charset('latin1');
mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');
mysql_set_charset('utf8');
$result = mysql_iquery('SELECT * FROM `table`');
while ($row = mysql_fetch_assoc($result)) {
$message = $row['name'];
$message = mb_convert_encoding($message, 'ISO-8859-15', 'UTF-8');
//$message = iconv("UTF-8", "ISO-8859-1//IGNORE", $message);
mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"');
}
Es "UPDATE"s mit den erwarteten Zeichen, außer, dass der string abgeschnitten wird, nachdem das Zeichen "ž". Ich meine, dass der Charakter und die folgenden chars sind nicht in der Zeichenfolge.
Auch, testen mit "iconv ()" (, kommentiert der code) macht das gleiche, auch mit //IGNORE //TRANSLIT
Ich auch getestet, mehrere Zeichensätze, zwischen ISO-8859-1 und ISO-8859-15.
Ich brauche wirklich Hilfe hier! Danke.
InformationsquelleAutor der Frage Nuno | 2012-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Von dem, was Sie beschreiben, es scheint, dass Sie UTF-8-Daten, die ursprünglich gespeicherten Latin-1 und dann nicht ordnungsgemäß konvertiert zu UTF-8. Die Daten wiederhergestellt werden; Sie benötigen eine MySQL Funktion wie
Ist es möglich, dass müssen Sie möglicherweise das weglassen der inneren Umwandlung, je nachdem, wie die Daten verändert während der Konvertierung der Verschlüsselung.
InformationsquelleAutor der Antwort ABS
Danach suchte ich etwa eine Stunde oder zwei für diese Antwort. Ich brauchte, um eine Migration eines alten tt_news db von typo in eine neue typo3 version. Ich habe bereits versucht, konvertieren Sie das charset in der Datei exportieren und wieder zu importieren, aber es nicht funktioniert.
Dann habe ich versucht, die Antwort oben von ABS und startet ein update auf die Tabelle:
Können Sie auch konvertieren imagecaption, imagealttext, imagetitletext und keywords, wenn nötig.
Hoffe, dies hilft jemand die Migration von tt_news zu neuen typo3-version.
InformationsquelleAutor der Antwort Marcel Grolms
Weg ist der bessere Weg
verwenden Verbindungs-schleppen Sie die Datenbank normal
dann verwenden Sie diesen code, um das, was Sie brauchen
Sie müssen Ihre Seite Codierung utf-8-meta-in der Kopfzeile der html cod (vergessen Sie nicht, dieses)
dann verwenden Sie diesen code
InformationsquelleAutor der Antwort hussien