エンコーディングの不一致:
PHP と MySQL のエンコード設定間の不整合により、UTF-8 で発音区別記号が正しく保存されない テーブル。新しい挿入は正しくなりましたが、古い行には依然として破損した文字が含まれています。
修正措置:
この問題を修正するには、MySQL の Convert() 関数を利用します。
<code class="sql">convert(cast(convert(name using latin1) as binary) using utf8)</code>
この関数は、Latin1 でエンコードされたデータを UTF-8 に変換します。二重変換により、変換プロセス中にデータが切り捨てられなくなります。
使用例:
コード内で、更新クエリ内で変換を適用します:
<code class="sql">mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string(convert(cast(convert(name using latin1) as binary) using utf8)).'" WHERE `a1`="'.$row['a1'].'"');</code>
これにより、テーブル内の名前列が正しく変換された UTF-8 で更新されます。文字。
注:
エンコード変換中のデータ変更によっては、クエリから内部変換関数を省略する必要がある場合があります。両方のシナリオをテストし、望ましい結果が得られる方を採用します。
以上がMySQL データベースで Latin1 文字を UTF-8 に正しく変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。