2つのmysqlサーバーがあります。同じmysqlクライアントでは、right_serverはフランス語の文字を正しくレンダリングしますが、wrong_serverはそうではありません。エンコーディングは同じです。
$ mysql -h right_server -NBe "'character_set_%' などの変数を表示" $ mysql -h error_server-NBe "'character_set_%'のような変数を表示する"
同じ結果を提供します。
文字セットクライアントutf8 文字セット接続utf8 文字セットデータベースutf8 文字セットファイルシステムバイナリ 文字セット結果utf8 文字セットサーバー utf8 文字セットシステムutf8
mysqldumpを使用して、テーブル構造が同じであることを確認してください。
$ mysqldump -h right_serverデータベースMY_TABLE grep MY_COL | $ mysqldump -hエラーサーバーデータベースMY_TABLE grep MY_COL |
ただし、コメントの1つが正しくレンダリングされません。
`MY_COL` varchar(7) COLLATE utf8_bin COMMENT 'associé à', `MY_COL` varchar(7) は utf8_bin コメント 'associ.' をソートします。
(mysqldump --default-character-set=UTF8 --no-data
と同じ結果)
文字がwrong_server
正しく保存されているようです。
[エラーサーバー] $ mysql -e '生成されたテーブルdb.MY_TABLE\Gを表示' `MY_COL` varchar(7) COLLATE utf8_bin COMMENT 'associé à',
mysqldumpエンコーディングを強制する方法は?
注:サーバー間の唯一の違いは次のとおりです。
Character_sets_dir /.../mysql.../share/charsets/
サーバー上にあり、SHOW VARIABLES LIKE 'character_set_%'
このディレクトリに定義されているutfファイルはありません。