大きな SQL ファイルをインポートしようとしています。1 つのサーバーで mysqldump によって作成され、iconv で変換されます。次のコマンドを使用します。
$ mysqldump -uxxx -p xxx > data.sql
$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT data.sql data.iconv.sql
mysqldump はすべてを utf-8 に変換しようとするため、データベースの "\x91" がダンプで "\xc3\x82\xc2\x91" に変わっていることに気付きました。iconvで「\ x91」に戻しました。それらを変換しないと、新しいサーバーでは "\xc2\x3f" になります。現在の「\x3f」の代わりに。
そのため、前に読んだように、cp1252 エンコーディングに固有の文字がいくつかあります。たとえば、"\x91" や "\x92" です。これらの文字は両方とも、新しいデータベースでは "\x3f" に変わりました。これは、インポートに使用するコマンドです。
$ /opt/mysql5/bin/mysql -uxxx -p -Dxxx < data.iconv.sql
これがどのように発生する可能性があり、それを防ぐために何をすべきか知っている人はいますか? これを知っていれば、データをそのまま移行できるはずです。
追加情報:
このソースをiconv-thingsに使用しました。ご覧のとおり、このページでは、他の 1 人も cp1252 で問題を抱えていました。多分それが原因です。
サーバーのバージョンは次のとおりです。
old-host: Ver 10.10 Distrib 5.0.18、pc-linux-gnu (i486) 用 new-host: Ver 10.11 Distrib 5.0.51、pc-linux-gnu (i686) 用