UTF8 テーブルの Latin1 文字の回復: 解決策
前述したように、PHP と MySQL の間で文字セットを設定すると、新しい挿入が保証されます。正しく保存されています。ただし、以前は Latin1 として保存され、その後破損した発音記号が含まれる古いデータを回復するのは困難な場合があります。
この問題を解決するには、MySQL 変換関数を利用できます。
convert(cast(convert(name using latin1) as binary) using utf8)
デフォルトでは, この機能を使用すると、ほとんどの破損したデータをそれ以上の変更を加えることなく修復できます。ただし、最初のエンコード変換中にデータがどのように変更されたかに基づいて内部変換を調整する必要がある場合があります。
次の例を考えてみましょう。
$result = mysql_iquery('SELECT * FROM `table`'); while ($row = mysql_fetch_assoc($result)) { $message = $row['name']; $message = convert(cast(convert($message using latin1) as binary) using utf8); mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"'); }
この関数を使用すると、次のようになります。破損した発音記号を回復し、影響を受ける行を正しく更新できるようになります。
以上がUTF8 MySQL テーブルで破損した Latin1 文字を回復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。