问题:jsp界面乱码。
解决:在其被调用的servlet中删除创建的PrintWriter类对象out.
今天编写javaweb的时候碰到了一个很头疼的问题,就是jsp界面中文乱码。为此,我在网上查了一些此类问题的解决方案,大多数都是说要加<%@ page contentType="texthtml;charset=utf-8"%>(我编程使用的是utf-8的字符编码)。但是我试了很多次,结果都还是乱码。这让我不知所措。然后我又想到了这个jsp是通过其他的servlet或者filter调用的。我碰到的问题是一个jsp通过servlet调用的,于是我就用一个filter调用这个jsp,运行调试的时候,竟然没有编码错误。于是就断定问题出在调用的那个servlet上。到底出在哪里呢!。因为之前我在这个servlet里面编写了一个servlet输出界面(只是练习用,结果也是乱码的),检查的时候发现里面使用的一个PrintWriter对象out没有删除。当删除了out对象之后运行调试后,发现能够正确编码了。!~oyeah!问题得以解决,高兴一下。然后我又在想一个问题,为什么当out对象存在的时候他的编码就会变得乱码呢 ??!~!~! 首先一个就是,之前我用这个servlet做界面输出练习的出现 了乱码。这个乱码很好解释。因为在练习的时候没有对输出的界面进行字符编码设置
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">虽然此servlet在服务端编码是用的utf-8,但是客户端浏览器确实不知道的,因此出现了那个问题,而对于为什么当创建了PrintWriter对象out后,调用其他jsp也会出现乱码我却没有一个很好的解释。当然有一点是可以明确的,那就是这个创建的out对象对于调用的jsp是会有影响的。