jsp传中文出现乱码问题

  编了个简单的jsp,结果jsp向SqlServer2008传中文出现乱码问题,找了半天发现以下几个错误,总结一下。
  通常情况下遇到乱码问题,解决的思路都是保证数据库+程序+页面编码三码一致。
  我遇到的问题如下:

1.表单使用Post方式提交后接收到的乱码问题

    这个乱码是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,
接受的jsp却以utf-8的方式接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。

A、接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 
这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。

B、在请求页面上开始处,执行请求的编码代码
 request.setCharacterEncoding("UTF-8");
 把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。
 直接使用String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。
   这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。

**如果要调用request.setCharacterEncoding进行编码设置,一定要在任何参数被访问之前调用。**

类StudentSer extends HttpServlet改后代码:

...
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");

        Student student = new Student();
        student.setSname(request.getParameter("sname"));
        student.setSpass(request.getParameter("spass"));

        StudentImpl studentImpl = new StudentImpl();
        studentImpl.saveStudent(student);
    }
...
C、为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器filter对所有jsp

创建 EnCodeFilter.java

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.Se
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值