我有两个 mysql 服务器,从同一个 mysql 客户端查看,right_server 正确渲染了法语字符,wrong_server 则不然。编码是相同的:
$ mysql -h right_server -NBe "显示变量如'character_set_%'" $ mysql -h错误_服务器-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
但其中一条评论未正确呈现:
`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 文件。