MySQL テーブルに UTF8 として格納されている Latin1 文字を修正する
この問題は、挿入中に Latin1 データが UTF8 に不適切に変換されたことが原因で発生します。正しい文字セットを設定したにもかかわらず、古いデータは間違った文字で破損したままになります。この状況を修正するには、影響を受けるデータを正しい UTF8 表現に変換する必要があります。
推奨される解決策には、MySQL 関数の利用が含まれます。
convert(cast(convert(name using latin1) as binary) using utf8)
この関数は、名前列データを受け取ります。これを Latin1 バイナリとして解釈し、UTF8 に変換します。バイナリへの外部変換により、データが生データとして処理され、それ以上の文字セット変換による破損が防止されます。
クエリの例を次に示します。
UPDATE `table` SET `name` = convert(cast(convert(name using latin1) as binary) using utf8) WHERE `name` LIKE '%[non-UTF8 characters]%'
このクエリは、すべての行を非- 名前列の UTF8 文字。データが正しく変換されるようにします。
注:元のエンコード プロセスによりデータがわずかに変更されたため、convert 関数呼び出しで Latin1 バイナリへの内部変換を省略する必要がある場合があります。
以上がMySQL に UTF8 として誤って保存されている Latin1 文字を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。