JSP中文乱码问题分类及解决方案

使用Tomcat5作为Web Container,遇到的各类中文乱码问题及解决办法。

1. Servlet里输出的「静态中文内容」显示乱码
现  象:在Servlet里通过java.io.PrintWriter对象输出的中文内容为乱码。
原  因:Tomcat默认输出的字符的编码为“ISO-8859-1”。
解决方案:response.setContentType("text/html;charset=GBK");

2. JSP页面里的「静态中文内容」显示乱码
现  象:JSP页面里输出的静态中文内容为乱码。
原  因:Tomcat默认输出的字符的编码为“ISO-8859-1”。
解决方案:<%@ page contentType = "text/html;charset=GBK" pageEncoding="GBK"%>

3. 表单提交,「POST方法提交的中文内容」显示乱码
现  象:使用request.getParameter(String)得到的中文参数值是乱码。
原  因:Tomcat默认采用“ISO-8859-1”编码处理参数。
解决方案:1. 使用过滤器过滤请求。request.setCharacterEncoding("GBK");
     2. new String(request.getParameter(String).getBytes("ISO-8859-1"),"GBK");

4. 表单提交,「GET方法提交的中文内容」显示乱码
现  象:使用request.getParameter(String)得到的中文参数值是乱码。
原  因:Tomcat默认采用“ISO-8859-1”编码处理参数。
解决方案:1. 修改“{$TOMCAT_HOME}/conf/server.xml”中的<Connector port="8080" ...,增加URIEncoding="GBK"。
     2. new String(request.getParameter(String).getBytes("ISO-8859-1"),"GBK");

5. 静态URL链接提交,「提交的中文内容」显示乱码
现  象:<a href="url?pavam=中文"...,使用request.getParameter(String)得到的中文参数值是乱码。
原  因:Tomcat默认采用“ISO-8859-1”编码处理参数。
解决方案:1. 修改“{$TOMCAT_HOME}/conf/server.xml”中的<Connector port="8080" ...,增加URIEncoding="GBK"。
     2. new String(request.getParameter(String).getBytes("ISO-8859-1"),"GBK");

6. <jsp:param>标签,「传递的中文参数值」显示乱码
现  象:<jsp:include page="footer.jsp"><jsp:param name="param" value="中文"/></jsp:include>,
      在footer.jsp里使用request.getParameter(String)得到的中文参数值是乱码。
原  因:Tomcat默认采用“ISO-8859-1”编码处理参数。
解决方案:1. 使用过滤器过滤请求。request.setCharacterEncoding("GBK");
     2. 在设置参数之前,调用request.setCharacterEncoding("GBK");即request.setCharacter...;<jsp:include...;
     3. 在设置参数之前,对参数进行encode,获得值后再decode。java.net.URLEncoder.encode("中文","GBK");
       java.net.URLDecoder.decode(request.getParameter(String),"GBK");  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值