解决中文问题,一劳永逸的方法,就是保证前后都是用同一个编码字符集,这里用的是utf8。
!!注意:修改database 前,最好把数据库内容dump出来,保留备份。
1,数据库需要是utf8的
修改配置文件:
[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'
[client]
default-character-set=utf8
这样默认值修改好了。
2,进入mysql ,看一下几个参数。
SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
如果其中还有不是utf8的,就手工修改下。
set 其中项=utf8
3,但是如果已经创建好了数据库,和table,就比较麻烦了。
用命令看
show create database XXX;
show create table xxx;
看是否是utf8 的编码,如果不是,需要修改。
alter database databasename character set utf8;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8;
4,php 连接时候需要添加下字符编码。
mysql_query("SET NAMES 'UTF8'");
5,后来发现,插入中文时候,还是乱码。。。
检查默认的.php文件,原因是,文件本身编码不是utf8 的,所以插入的中文依然是乱码。
vim 进入后set fileencoding 看下编码格式。
如果不是 utf8 的格式,用set fileencoding=utf-8 命令修改。
附带一个转换编码的 blog说明:http://www.imhdr.com/archives/linux-view-the-file-encoding-format-and-the-file-encoding-conversion/
到此为止,应该可以解决中文乱码问题了,记住再把备份的数据库,恢复回去。