servlet乱码解决的小秘密

来源:互联网 发布:上海财经大学考研知乎 编辑:程序博客网 时间:2024/06/05 07:20

        最近在学习servlet,随着学习的深入,我们遇到了,有中文的时候就会产生中文乱码的情况,使我们苦恼不已,我相信的刚刚开始学习servlet,和我一样为之苦恼,不用怕,接下来我们就一起研究一下,乱码的原因吧。

        工欲善其事必先利其器。我们知道现在,我们用的浏览器用的字符集编码为“gb2312”,“gb2312”是支持中文的,但是我们用的Tomcat,的编码为“ISO-8859-1”,此编码格式并不支持中文,也就是说,中文乱码产生的原因是,浏览器的字符集和Tomcat的字符集不一致导致的。

        上面我们知道了乱码产生的原因了,现在我们着手解决一下吧。思考一下,既然是两种,字符集的不同导致了乱码,是不是我们可以从字符集着手呢?答案是肯定的!servlet乱码分为request乱码和response乱码,即请求乱码和相应乱码。在进一步,request乱码又可以根据提交的不同方式分为,post乱码和get乱码;response乱码也可以分为字节乱码,和字符乱码。

        request的post乱码解决的方法,是在使用request之前用request.setcharacterencoding(“”UTF-8”),就可以解决了,自己的理解是将request的字符编码用UTF-8编码,”UTF-8”字符集是支持“gb2312”,从而可以解决乱码的情况;而get乱码的解决方式为:new String(request.getbytes(“ISO-8859-1“),UTF-8),这个方法的意思是,首先收ISO-8859-1的格式,将其解码,因为Tomcat会为其编码,所以先要将其按照Tomcat的编码格式,先进行解码,在按照我们提供的编码格式“UTF-8”,将字节数组转成字符串String 类行。

        接下来,我们以为解决一下response的乱码。response将内容输入到浏览器,有两种方式,第一种是将内容以字符形式,将内容写到浏览器端,第二种方式是一字节的方式将其写到浏览器端,那么针对不同的方式,乱码的解决方式是不同的。先说字符的方式,我们前面已经说过了,浏览器的编码格式为“gb2312”,我们可以先“通知”浏览器用什么字符集进行解码,我们可以设置response.setheader(content-type;text/html;charset=UTF-8),通知浏览器按照这种方式进行解码,然后在设置,字符编码,response.setcharacterencoding(“UTF-8”);或者使用这个方法可以同时改变前面的内容:response.setcontenttype(“text/html;charset=UTF-8”)。现在说一下,字节输入产生乱码的解决方法,和上面的一样,我们可以先“通知”浏览器以什么样的方式解码,多以也是,现将浏览器的解码格式设置为:response.setheader(content-type;text/html;charset=UTF-8),然后将其输出是的字节变为UTF-8即可,两种编码集想对应就不会产生中文乱码了,即“XXXXX”.getbytes(“UTF-8”)。

        上面就是自己对乱码产生的理解,以及解决乱码的方法了,希望对你有所帮助!!!

原创粉丝点击