在学习过程中,有时候会碰到自己弄的mysql数据库中的数据出现中文乱码,英文对应latin1,utf8,gbk这三种编码貌似没有问题,而中文的编码对此则不一样了。
为考证其问题所在,特地请教了百度老师,给出了两个页面。
http://blog.youkuaiyun.com/red4711/article/details/6007248
http://xumingrencai.iteye.com/blog/1516789
里面讲了许多,我也在控制台自己操作了一番。
首先记一下几个简单的命令:
查看mysql当前的编码:mysql> SHOW VARIABLES LIKE 'character_set%';
(注意前面一定是大写,小写试过说是Empty set,估计是因为show也是mysql一个命令,当成是show variables这个表了)
创建表:create table bian(id int, name varchar(10));
设置命令:set names ' ' ; 空处填latin1,utf8,gbk之一。
或者单独设置各个character的值, set character_set_results='gbk';
接下来,我尝试了不同的编码进行创建、插入和查询表,其中包括改动编码后的查询等。
结果发现,其实只要保持一种不变,而操作过程中不要改变编码方式,则不会出现乱码。
如:我用latin1的编码,创建和插入了有中文字符的表,此时查询没有问题。如果此时改变了编码,那么查询会出现乱码,插入会出现报错。
将编码改变回来就可以了。
至于第二篇里说到是jsp,html中的编码问题,还没有仔细研究,姑且记住人家的结论:
经过进一步实验,发现无论是 set names 'gbk'、
set names 'utf8' 还是
set names 'latin1'
都能正常地插入和查询出中文,最最关键的其实不在于数据库
而在于 jsp、html 页面的编码是否为 GBK !!!这是最终的结论!!
其实我也是这么想的。前面证明是正确的,而后面网页方面的,我就没有试过了。有机会就尝试一下。