巴拉巴拉
小魔仙

JavaWeb乱码的那些事

今天接手的一个项目出现了乱码的问题。Tomcat编码UTF-8,页面UTF-8,Web.xmlUTF-8,数据库UTF-8,数据库连接UTF-8,代码文件UTF-8!但是!!!!!就是出了乱码的问题。一个很少见的乱码问题,可能比较坑,记下来,防止未来我或者有人会需要查看。

开始我这里发现乱码,输入“中国”,但是存库后是“中国”,为了搞清楚是什么样的乱码,写了一个小格式转换的Demo

String a = "中国";
String[] arrCharset = new String[]{"GBK","UTF-8","GB2312","ISO-8859-1"};

for(String e : arrCharset){
	for(String d : arrCharset){
		System.out.println(e + " ------> " + d + " : " + new String(a.getBytes(e),d));
	}
}

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

根据控制台打印发现:UTF-8和ISO-8859-1之间出了问题

GBK ------> GBK : ??????
GBK ------> UTF-8 : ??????
GBK ------> GB2312 : ??????
GBK ------> ISO-8859-1 : ??????
UTF-8 ------> GBK : 盲赂颅氓聸陆
UTF-8 ------> UTF-8 : 中国
UTF-8 ------> GB2312 : 盲赂颅氓�陆
UTF-8 ------> ISO-8859-1 : 中国
GB2312 ------> GBK : ??????
GB2312 ------> UTF-8 : ??????
GB2312 ------> GB2312 : ??????
GB2312 ------> ISO-8859-1 : ??????
ISO-8859-1 ------> GBK : 涓浗
ISO-8859-1 ------> UTF-8 : 中国
ISO-8859-1 ------> GB2312 : 涓���
ISO-8859-1 ------> ISO-8859-1 : 中国

本来很好想的,因为ISO-8859-1一般是Tomcat默认的编码,但是我去Tomcat的server.xml去查看了一下。

<Connector port="8080" protocol="HTTP/1.1"
	connectionTimeout="20000"
	redirectPort="8443"  URIEncoding="UTF-8" />

额。。。。是UTF-8,再看看web.xml

<filter>
	<filter-name>encodingFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
	<init-param>
		<param-name>forceEncoding</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encodingFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

嗯。。还是UTF-8,页面编码,嗯也是UTF-8,JSP代码

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

嗯。。。HTML里面的head标签头。

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>

(╯‵□′)╯︵┻━┻坑爹呢这是!!!

(╯‵□′)╯︵┻━┻最后,在web.xml中,Filter可以定义多个,他们按照顺序进行过滤,吧web.xml里面定义字符编码的Filter请放在最上面,放在最上面,放在最上面。重要的事情要说三遍!

最后!(╯‵□′)╯︵┻━┻!搞定。如果有人碰到和我一样的问题,不妨试试吧字符集编码的Filter放到最上面试试看,万一成功了呢!

赞(0) 打赏
如果文章对你有帮助,欢迎你来评价反馈。AgainFly » JavaWeb乱码的那些事

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • Q Q(选填)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏