mysql导入乱码问题解决办法
很多朋友可能会碰到在利用命令或phpmyadmin导入数据时出现中文乱码问题了,下面我来给大家介绍解决导入乱码的方法,有需要的朋友可参考。
要想导入时避免不出现乱码,只要保证数据文件的编码和导入时甚至的编码一直即可,注意:不是和的编码一致。例如:数据文件data.sql,编码为UTF-8,使用如下命令:
代码如下 | 复制代码 |
mysql -uroot -p --default-character-set=utf8 db |
上面的办法不一定有效果,因为不知道mysql编码,我们可以先查看mysql编码
代码如下 | 复制代码 |
mysql> show variables like "%char%"; +--------------------------+---------------------------------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Percona-Server-5.1.57-rel12.8-233--x86_64/share//charsets/ | +--------------------------+---------------------------------------------------------------------------------+ 8 rows in set (0.01 sec)
mysql> show variables like "%coll%"; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin1_swedish_ci | | collation_database | utf8_bin | | collation_server | utf8_bin | +----------------------+-------------------+ |
修改sql文件
代码如下 | 复制代码 |
SET collation_connection = utf8_bin; SET character_set_client = utf8; SET character_set_connection = utf8; |
再执行导入
代码如下 | 复制代码 |
mysql --socket=/opt/mydata/my3306/my3306.sock -A |
还发现一个程序导入乱码解决办法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:
代码如下 | 复制代码 |
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass); mysql_query("SET NAMES 'GBK'"); |
数据库字符集为utf-8
连接语句用这个
代码如下 | 复制代码 |
mysql_query("SET NAMES 'UTF8'"); mysql_query("SET CHARACTER SET UTF8"); mysql_query("SET CHARACTER_SET_RESULTS=UTF8'"); |