##一、JSP页面中文乱码
在JSP页面中,中文显示乱码两种情况:一种是HTML中的中文乱码,一种是在JSP中动态输出的中文乱码。
jsp页面:
<%@ page language="java"import="java.util.*"%>
页面中文,标题中文。运行时,乱码
原因:没有在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>
运行时乱码:
。修改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结果乱码
原因是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文件时会出现乱码。
需要更改一下Eclipse对JSP的默认编码就可以了。
注意:
在Eclipse中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中文就不能保存
修改后在保存的时候会提示如下:
现这个提示的原因在于JSP源文件中有ISO=8859-1编码无法识别的中文字符,对于这个问题,解决办法就是在JSP页面中声明页面编码格式即可。添加:pageEncoding=“gb2312”指明了JSP页面编码采用GB2312,这样就可以正常保存JSP的源文件了。