中文乱码折磨了2天了,刚解决了忍不住写篇博客。。。。。。
刚出现乱码是因为在做搜索时,从控制台提起的中文在控制台显示的是正常,但是当在网页回显时出现乱码。后来不停的更改,搞的控制台也是乱码了,然后苦逼的重装了mysql,MyEclipse,然并卵,最后静下心分析原因才出来了。给自己一个掌声。
(注意Unicode和utf8是兼容的,最开始还以为是Java默认是Unicode和utf8不兼容造成的,浪费了很多时间,看图)
在这里我理一下关系
MySql编码
MyEclipse控制台编码
java编码
html编码
一.控制台乱码:
从网页取数据到java程序,控制台打印乱码
html:iso-8859-1
java:unicode
console:utf8
显然是html穿到java时数据格式不一致
解决:new String(username.getBytes("iso-8859-1"),"utf8"));
(但是utf8文字不经转化就可以在html文件正常显示)
二:回显乱码
数据库取数据到java程序到html
mysql:utf8
java:unicode
html:iso-8859-1
这些之间本没有问题,但是java和html之间传输是靠servlet完成的,是因为servlet编码造成造成回显乱码
解决:
response.setHeader("content-type","text/html;charset=UTF-8");
response.setHeader("Content-Type", "application/json;charset=UTF-8");
html和application只能选一个