Eu tenho dois servidores mysql, vistos do mesmo cliente mysql, right_server está processando os caracteres franceses corretamente, wrong_server não é. A codificação é a mesma:
$ mysql -h right_server -NBe "SHOW VARIABLES LIKE 'character_set_%'" $ mysql -h wrong_server -NBe "SHOW VARIABLES LIKE 'character_set_%'"
dê os mesmos resultados:
character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8
Eu uso o mysqldump para verificar se as estruturas das tabelas são as mesmas:
$ mysqldump -h right_server db MY_TABLE | grep MY_COL $ mysqldump -h wrong_server db MY_TABLE | grep MY_COL
mas um dos comentários não é processado corretamente:
'MY_COL' varchar(7) COLLATE utf8_bin COMMENT 'associé à', 'MY_COL' varchar(7) COLLATE utf8_bin COMMENT 'associ. .',
(resultado com mysqldump --default-character-set=UTF8 --no-data
é o mesmo)
Em wrong_server
caracteres parecem armazenados corretamente:
[wrong_server]$ mysql -e 'show create table db.MY_TABLE\G' 'MY_COL' varchar(7) COLLATE utf8_bin COMMENT 'associé à',
Como forçar a codificação mysqldump?
Nota: a única diferença que vejo entre os servidores é
character_sets_dir /.../mysql.../share/charsets/
em SHOW VARIABLES LIKE 'character_set_%'
de um servidor e nenhum arquivo utf definido neste diretório.
Tags mysql linux character-encoding