在jsp开发过程中会遇到各种中文乱码问题,对乱码的处理方法也有所不同!究其原因.大部分是因为编码默认采用ISO-8859-1或者是编码不一致导致的,悲剧的是默认的ISO-8859-1编码不支持中文!(唉,中国...感慨一下,不解释)所幸,UTF-8,GBK,GB2312都是支持中文的!
1. jsp页面中文乱码 这种乱码最常见也最好解决 在page指令中添加页面内容和显示方式的设置,如下两种都可以:
- <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
- <%@ page language="java" import="java.util.*" ContentType="text/html;charset=gb2312"%>
有人会问pageEncoding和ContentType有什么区别,简单说
contentType指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码
pageEncoding指定JSP编写时所用的编码
具体不解释
2. 表单提交中文乱码 对于表单中提交的数据可以用转码方式解决(适合单一表单)也可以用过滤器解决(适合多表单),个人推荐用过滤器,一了百了,当然采取哪种方法由你来决定!
过滤器
注:此方法仅限提交方法为doPost,doGet方法可以用转码
文件名:SetCharacterEncodingFilter.java
在web.xml中添加过滤器的配置如下:
转码
文件名:FormCharset.jsp
此表单提交给自己,new String(userName.getBytes("ISO-8859-1"), "gb2312")这句代码是转换编码格式的关键,这种转码方式还可以用在读取数据库中文乱码的转码!但要是原来的字符编码不是ISO-8859-1时这个方法就会失效,出错!比如经过上面说的过滤器处理再使用这个方法就会发生错误!
3. URL传递中文参数乱码
URL传递中文参数乱码比较特殊,仅仅转换这个中文字符串的编码或者设置JSP页面显示编码都不能解决这个问题!必须对服务器的配置文件进行修改,这里针对Tomcat的配置文件进行修改,具体如下:
打开tomcat的conf目录下的server.xml配置文件,找到<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" disableUploadTimeout="true"/>在port="8080"后面添加URL编码设置URLEncoding="gb2312" 重启服务器即可