最近使用MySQL Server 5.0的时候会遇到乱码问题;所以在网上找了一些资料,再加上自己的亲身经历写下这个文章。
MySQL会出现中文乱码的原因几点:
1.server本身设定问题,例如还停留在latin1
2.table的语系设定问题(包含character与collation)
3.客户端程式(例如php)的连线语系设定问题
建议使用utf8,兼容世界所有字符。
当遇到乱码问题:
首先,我们要先查看MySQL默认的编码格式,代码如下:
注:以前2个来确定,可以使用set names utf8,set names gbk设置默认的编码格式;
执行SET NAMES utf8的效果等同于同时设定如下:
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8';
逐个设置。
如果这样做完还是解决不了你的乱码问题,那终极绝招就来了:
MySQL修改配置文件:
找到MySQL Server 5.0安装目录下的my.ini文件
打开找到两处default-character-set都给它设置成utf8如下:
第一处:
[mysql]下的
default-character-set=utf8
第二处:
[mysqld]下的
default-character-set=utf8
保存,重启MySQL服务(必须重启不然数据库默认设置虽然改了,但是当前数据库编码还是上次启动服务的设置)
步骤如下:
1.右键计算机-->管理-->服务和应用程序-->服务-->找到MySQL-->右键重启。
最后总结下各种乱码问题最终就是因为数据存储格式与取出显示格式不匹配,若出现乱码问题,不但要检查MySQL中编码格式,还要从调用数据库的地方检查例如:
jdbcodbc桥接 :
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager
.getConnection(
"jdbc:mysql://localhost:3306/onlineshopping?useUnicode=true&characterEncoding=UTF-8",
"root", "123456");
等等...
以上纯属个人经验及参考资料得来,如有不足,望大家指点。