SQL文件导入中文乱码问题
1.查看当前数据库的字符集的语句如下: show variables like ' character %';
- 说明:
- character_set_client:客户端请求数据的字符集。
- character_set_connection:客户机/服务器连接的字符集。
- character_set_database:默认数据库的字符集。
- character_set_filesystem:把操作系统上文件名转化成此字符集。
- character_set_results:结果集,返回给客户端的字符集。
- character_set_server:数据库服务器的默认字符集
- character_set_system:系统字符集。
- 执行SELECT语句时,如果字符集设置错误,可能发生乱码等问题。
2.客户端产生乱码的根本原因
- 客户端程序没有正确地设置客户端(client)字符集,导致原先的SQL语句被转换成当前连接(connection)所指定的字符集,而这种转换是会丢失信息的。另外,如果数据库字符集设置不正确,那么当前连接connection字符集转换成数据库(database) 字符集同样会导致丢失编码。
- character_set_client:要告诉服务器,发送的数据是何种编码;
- character_set_connection:告诉字符集转换器,转换成何种编码。
- character_set_results:查询的结果用何种编码。
- 如果以上三者都为字符集N,可简写为set names 'N';
3.导入SQL文件乱码问题
在navicat可视化导入一般不会出现问题。
使用命令source xxx.sql导入时,若出现中文乱码,需要在sql文件的首行加入/*!40101 SET NAMES utf8 */;然后在mysql命令窗口输入set names gbk;解决中文乱码;此时使用命令再次查询,中文正常显示,亲测有效。
不足之处欢迎评价与指正,觉得有帮助,请点赞!