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 &aacute; (á)ţă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

Schreibe einen Kommentar