##一、JSP页面中文乱码
在JSP页面中,中文显示乱码两种情况:一种是HTML中的中文乱码,一种是在JSP中动态输出的中文乱码。
jsp页面:

<%@ page language="java"import="java.util.*"%>

页面中文,标题中文。运行时,乱码

java的jsp返回乱码 jsp输出乱码_jsp


原因:没有在JSP中指定页面显示的编码,更改如下:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" %>

再次运行乱码消失,原理是向页面指定编码为GB2312,页面就会按照此编码来显示。
##二、URL传递参数中文乱码

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>  
<html>  
    <head>   
        <title>URL传递参数中文处理示例</title>  
    </head>  
    <%  
        String param = request.getParameter("param");  
    %>  
    <body>  
        <a href="URLCharset.jsp?param='中文'">请点击这个链接</a><br>  
        你提交的参数为:<%=param%>  
    </body>  
</html>

运行时乱码:

java的jsp返回乱码 jsp输出乱码_javaWeb_02

。修改Tomcat服务器的配置文件server.xml,设置URIEncoding=“gb2312”即可,重启Tomcat服务器。这个就是向程序指明编码类型。

##三、表单提交中文乱码

对于表单的数据可以使用request.getParameter(“”)的方法获取,但是当表单中出现中文数据的时候就会出现乱码。

jsp页面1 用户名:密码:提交按钮

jsp页面2

<%  
                String userName = request.getParameter("userName");  
                String password = request.getParameter("password");  
                out.println("表单输入userName的值:" + userName + "<br>");  
                out.println("表单输入password的值:" + password + "<br>");  
             %>

页面1输入中文,页面2结果乱码

java的jsp返回乱码 jsp输出乱码_表单_03


原因是Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。所以需要转换编码格式来解决。所以做如下变化:

<%  
  String userName = request.getParameter("userName");  
  String password = request.getParameter("password");  
  out.println("表单输入userName的值:" + new String(userName.getBytes("ISO-8859-1"), "gb2312")+ "<br>");  
  out.println("表单输入password的值:" + new String(password.getBytes("ISO-8859-1"), "gb2312")+ "<br>");  
%>

先从ISO-8859-1格式的字符串中取出字节内容,然后在用GB2312的编码格式重新构造一个新的字符串来支持中文。

表单的中文输入乱码问题已经得到解决。但如果表单中的输入项不止两个,那么每个输入项都需要进行编码转换,那样就很麻烦了。这时就需要过滤器filter了。

##四、Eclipse中JSP文件中文乱码

在Eclipse中默认的JSP编码格式为ISO-8859-1,所以当打开由其他编辑器编辑的JSP文件时会出现乱码。

java的jsp返回乱码 jsp输出乱码_java_04


需要更改一下Eclipse对JSP的默认编码就可以了。

java的jsp返回乱码 jsp输出乱码_java的jsp返回乱码_05


注意:

在Eclipse中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中文就不能保存

修改后在保存的时候会提示如下:

java的jsp返回乱码 jsp输出乱码_java_06


现这个提示的原因在于JSP源文件中有ISO=8859-1编码无法识别的中文字符,对于这个问题,解决办法就是在JSP页面中声明页面编码格式即可。添加:pageEncoding=“gb2312”指明了JSP页面编码采用GB2312,这样就可以正常保存JSP的源文件了。