jsp乱码学习

java web 默认为 ISO8895-1

 

1,调用JSP页面显示乱码

     (1) 通过浏览器调用JSP页面,在浏览器中所有的中文内容出现乱码

     (2) 首先确认本JSP在编辑器中保存文件内容时,使用的是UTF-8的编码格式,然后在JSP页中页面中的开始处添加

               <%@ pageEncoding="UTF-8"%> 就可以解决这个中文乱码的问题。

2,调用servlet页面显示乱码

      (1) 通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码

      (2) 在servlet使用response对输出内容先执行response.setContext("text/html; charset=utf-8") 设定输出的内容编码为utf-8

 

3,POST表单参数乱码

     (1) 通过jsp页面,HTML页面或者servlet中的表单元素提交参数给对应的JSP页面或servlet,而JSP页面或者servlet接收的中文参数值乱码。

     (2) 在接收post提交的参数之前,使用request.setCharacterEncoding("UTF-8")设定接收参数的内容使用UTF-8编码。

 

4,URL方式传递参数乱码

    (1) 使用表单传递参数,可以通过POST或GET方式。不使用表单,还可以使用链接方式传递参数,这种传递参数的方式本质上是和GET方式传递参数一样,这种传弟参数的值是中文,也会出现乱码。

    (2) 对于这种情况,修改 服务器TOMCAT目录下,web/conf/server.xml

    <connector port="8080"  potocol="..." ..... URIEncoding="UTF-8">

 

5, 最通用的方法,设置过滤器

  

import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterEncodingFilter implements Filter { private FilterConfig config; private String encoding = "ISO8859_1"; public void destroy() { config = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding); chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { this.config = config; String s = config.getInitParameter("encoding"); if (s != null) { encoding = s; } } }

 

定义一个CHINESE类,来对所有传入的数据进行转换。

然后在web.xml里加入这样一段代码

<filter> <filter-name>EncodingFilter</filter-name> <filter-class> com.tool.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB2312</param-value> </init-param> </filter>

 

你可能感兴趣的:(jsp,servlet,浏览器,filter,null,encoding)