用 LOAD DATA INFILE 命令导入数据时中文是乱码。
解决:
(1)执行下面命令,看编码。
1 | mysql> SHOW VARIABLES LIKE "%CHAR%"; |
(2)把全部编码都改成utf8;我只改了character_set_database和character_set_server:
1 | set character_set_database=utf8; |
(3)再次执行(1)中命令:
1 | mysql> SHOW VARIABLES LIKE "%CHAR%"; |
这样再导入数据就不会有中文乱码了。
注:(2)中的命令。网上说可以先试用命令: set names utf8; 如果变量的输出仍然不是全部都是utf8,再使用上面的一个一个赋值的方法。
但是上面的办法只能用在一个终端里有效。我们可以通过修改数据库的编码永久解决这个问题:
修改数据库编码:
1 | alter database you_data_base_name character set utf8; |
(我后来又试了一下只需要改set character_set_database=utf8;的字符编码就可以了)
原因:
通过命令 status 可以数据库中的状态:
1 | mysql> status; |
你在执行过上面的(2)(set character_set_database=utf8;)后再执行 status 可以看到 用“#”标出来的那行的‘latin1’变成了‘utf8’.
附:
– character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集
– 还有以collation_开头的同上面对应的变量,用来描述字符序。