首页 > 数据库 > MySQL > 正文

mysql导入乱码问题解决办法

2024-07-24 12:38:08
字体:
来源:转载
供稿:网友

很多朋友可能会碰到在利用命令或phpmyadmin导入数据时出现中文乱码问题了,下面我来给大家介绍解决导入乱码的方法,有需要的朋友可参考.

要想导入时避免不出现乱码,只要保证数据文件的编码和导入时甚至的编码一直即可,注意,不是和数据库的编码一致,例如,数据文件data.sql,编码为UTF-8,使用如下命令:

mysql -uroot -p --default-character-set=utf8 db < data.sql

上面的办法不一定有效果,因为不知道mysql编码,我们可以先查看mysql编码,代码如下:

  1. mysql> show variables like "%char%"
  2.  
  3. +--------------------------+---------------------------------------------------------------------------------+ 
  4.  
  5. | Variable_name            | Value                                                                           | 
  6.  
  7. +--------------------------+---------------------------------------------------------------------------------+ 
  8.  
  9. | character_set_client     | latin1                                                                          | 
  10.  
  11. | character_set_connection | latin1                                                                          | 
  12.  
  13. | character_set_database   | utf8                                                                            | 
  14.  
  15. | character_set_filesystem | binary                                                                          | 
  16.  
  17. | character_set_results    | latin1                                                                          | 
  18.  
  19. | character_set_server     | utf8                                                                            | 
  20.  
  21. | character_set_system     | utf8                                                                            | 
  22.  
  23. | character_sets_dir       | /usr/local/Percona-Server-5.1.57-rel12.8-233--x86_64/share//charsets/ | 
  24.  
  25. +--------------------------+---------------------------------------------------------------------------------+ 
  26.  
  27. rows in set (0.01 sec) 
  28.  
  29.  
  30.  
  31. mysql> show variables like "%coll%"
  32.  
  33. +----------------------+-------------------+ 
  34.  
  35. | Variable_name        | Value             | 
  36.  
  37. +----------------------+-------------------+ 
  38. --Vevb.com 
  39. | collation_connection | latin1_swedish_ci | 
  40.  
  41. | collation_database   | utf8_bin          | 
  42.  
  43. | collation_server     | utf8_bin          | 
  44.  
  45. +----------------------+-------------------+ 

修改sql文件,代码如下:

  1. SET collation_connection = utf8_bin; 
  2.  
  3. SET character_set_client = utf8; 
  4.  
  5. SET character_set_connection = utf8; 

再执行导入,代码如下:

mysql  --socket=/opt/mydata/my3306/my3306.sock -A < xxx.sql 就好了...

还发现一个程序导入乱码解决办法,就是在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,连接语句用这个,代码如下:

  1. mysql_query("SET NAMES 'UTF8'");  
  2. mysql_query("SET CHARACTER SET UTF8");  
  3. mysql_query("SET CHARACTER_SET_RESULTS=UTF8'"); 
  4. --Vevb.com

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表