在项目里遇到了插入的中文字符变成乱码的问题,修改了MySQL的字符集相关变量却没有解决问题,上网找了下,尝试了各种方法最终解决。
修改global的variable:set character_set_database=utf8,却不能解决某个数据库建好之后,新建的表的character_set_database还是latin1,导致插入的中文字符乱码。
通过修改字符集解决:
alter database dbname character set utf8;
总结下MySQL字符集编码问题的解决方案:
1.修改配置文件,重启MySQL
Linux下vi /etc/my.cnf
Windows下修改my.ini
增加一行(或修改已有行):
default-character-set=utf8;
2.创建数据库时指定字符集
create database dbname character set utf8;
3.修改字符集
修改已有数据库的字符集:
alter database dbname default character set utf8;
alter table tablename default character set gbk collate gbk_chinese_ci;
alter table `test` change `dd` varchar(45) character set gbk collate gbk_chinese_ci;
4.修改字符集相关变量
显示字符集相关变量:
show (global) variables like '%set%';
set names utf8;相当于下面3条语句:
set character-set-client=utf8;
set character-set-results=utf8;
set character-set-conection=utf8;