java乱码涌现的问题有很多,这里紧张记录下tomcat,log4j,mysql,jsp,html,http(get,post要求乱码处理)。常见的问题可能是tomcat,http要求乱码问题了,至于jsp和html的乱码问题就很大略了,相信大家也知道,我也就不多说了,首先来说下tomcat的乱码问题,
一个是程序须要发送http GET要求到做事器,要求的参数中包含了中笔墨符。程序中参数为UTF-8格式,且经由了UTF-8 URL编码再发送。利用的tomcat做事器,但做事器端后台程序中取到的参数的中文是乱码。
办理办法:修正Tomcat的Server.xml,在Connector标签中加上URLEncoding参数。
<Connector port=\公众8080\公众 maxThreads=\"大众150\公众 minSpareThreads=\公众25\"大众maxSpareThreads=\"大众75\"大众 enableLookups=\"大众false\公众 redirectPort=\"大众8443\公众acceptCount=\"大众100\"大众 debug=\"大众99\公众 connectionTimeout=\"大众20000\"大众disableUploadTimeout=\"大众true\"大众 URIEncoding=\"大众UTF-8\公众/>
另一个是tomcat掌握台打印乱码,程序中输出到tomcat掌握台的中文信息乱码了,
办理办法:打开文件/tomcat/bin/catalina.bat,然后设置set JAVA_OPTS= 的内容中添加选项-Dfile.encoding=UTF-8即可,当然,我不敢包证,但是我的便是这么处理然后就可以了。
然后是log4j的日志打印乱码,这个乱码也是打印在tomcat掌握台的时候乱码,但是日志文件却不会,而且我本地测试的时候打印也不会乱码
而且我配置的也是utf-8,这个曾经让我恼火好久,后面我有时在一篇博客上创造,说有些做事器你配utf-8是弗成的,他的是编码便是GBK,我就权当试试,没想到还真是这个问题,这也是让我很无语,,,,
然后便是http要求的乱码,我这个乱码问题是我在shiro判断是否登录的时候,由于我是前后端分离,以是我shiro判断未登录的时候,是返回状态码和提示信息,而不是跳转登录页面,我用response返回中文提示信息是,结果返回的是乱码,可是我明明设置了
res.setCharacterEncoding(\"大众utf-8\"大众);
可是到前端页面的时候还是乱码了,这让我很费解,后面我仔细想了下,我做事端是设置了返回utf-8的编码,但是浏览器是用utf-8去解析的吗?后面去查了下还要加一条配置,
res.setContentType(\"大众text/html;charset=utf-8\"大众);
之前知道有这个配置,但是一贯不知道有什么差异,本日年是明白了一点,这个便是见告浏览器,你要用什么编码去解析这个数据。
末了一个是mysql 中文的乱码了,这个其实让我烦恼了好久,我去网上查了,说建表的时候要设置utf-8的编码,可是我在新建数据库的时候就设置了默认便是utf-8的编码,然后我说要配置数据库的默认编码,修正mysql配置文件/etc/my.cnf。
[mysqld]character-set-server=utf8 [client]default-character-set=utf8 [mysql]default-character-set=utf8
我设置好这个往后,终于不会乱了,但是,,保存进去的中文居然全部变成了???号,于是又去奔波了,
通过这个命令,我们可以看到,我们做事端居然还不是utf-8???
这让我很伤,终于,寻的良方,
只要在数据库properties文件的连接信息里加两个参数
?useUnicode=true&characterEncoding=utf-8
就可以了,唉,真是一波三折啊,
真是与做事器斗,其乐无穷;与数据库斗,其乐无穷;与浏览器斗,其乐无穷啊