我的数据库采用编码如下:

mysql> show variables like 'coll%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
 
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

  数据库的编码采用utf8

开始用mysqldump出来的都是乱码。后来采用 –default-character-set=gbk参数,然后再用iconv转码为utf8就解决了问题。

下面是我的数据库备份脚本

    #!/bin/sh   
    #####configurate#######   
    rq=`date +%Y%m%d%N`   
    user="user"  
    password="password"  
    rm -rf /var/lib/mysql/mysql-bin.*   
    mysqldump -u$user -p$password --default-character-set=gbk --single-transaction --flush-logs --master-data=2 mydatabase>/home/ict/mysql_backup/database$rq.sql   

导出后转码

iconv -t utf-8 -f gbk -c database.sql>databaseutf8.sql

这样已经可以看到正确的中文了。

导入

在windows下,如果采用HeidiSQL打开SQL文件,可以正确看到中文,但是导入后还是乱码。

解决办法,采用记事本打开,选择另存为,编码选择ANSI。然后再用HeidiSQL工具打开导入即可。