关于tomcat中jsp及servlet乱码问题

    技术2022-05-11  58

    最近用jsp做网站,遇到最烦人的一件事情就是乱码问题

    1、servlet接受中文参数乱码

    这个比较容易解决,jsp的第一行加入

    <%@ page language="java"  pageEncoding="GBK"%>

    具体的编码可以选择gbk、gb2312等

    然后在servlet的doget、dopost等service方法中,在输出之前,也就是

    PrintWriter out = response.getWriter();

    这一行的前面加入

    response.setContentType("text/html");request.setCharacterEncoding("GBK");response.setCharacterEncoding("GBK");

     即可解决

    2、jsp接受中文参数乱码

    这个问题比较复杂,用out.println("中文")直接输出汉字时,如果出现乱码,一般就是上文提到的jsp文件第一行没有

    <%@ page language="java"  pageEncoding="GBK"%>

    造成

    然而即使加上了上面那一行,由url传递过来的中文参数仍然会显示乱码,这里的原因就是在tomcat将jsp页面编译为servlet的时候,仅仅把pageEncoding="GBK"编译为

    response.setContentType("text/html;charset=GBK");

    而并没有同时将request编码进行设定,必须在jsp中手工进行设定request.setCharacterEncoding,而设定的位置也很重要,我试过将request.setCharacterEncoding放在pageEncoding下面一行,或者出现乱码的那一行的前面,都没有解决问题,最后将request.setCharacterEncoding放在首次读request前,问题解决,也就是说,一定要在调用request前设置编码


    最新回复(0)