
一、JSP页面中文乱码
在JSP页面中,中文显示乱码有两种情炕种是HTML中的英文乱码,另一种是在JSP中动态输承文乱码。
先看一赋绦/p>
<%@ page language="java" import="java.util.*" %>
<html>
<head>
<title>中文显示示例</title>
</head>
<body>
这是一改显示示例:
<%
String str = "中文";
out.print(str);
%>
</body>
</html>
上面这赋绦孟谝趁嫦允炯妇渲形亩冶晏庖彩侵形摹T诵泻榔允救缤妓近/p>

原亿没有在JSP中指定页面显示的编码,消除乱码的解靖很枷面代码中page命令更改成如下所示即可
<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" %>
<html>
<head>
<title>中文显示示例</title>
</head>
<body>
这是一改显示示例:
<%
String str = "中文";
out.print(str);
%>
</body>
</html>
再次运行乱码消失,原理就是湘指定编码为GB2312,那么页面才会根据此编码来显示,于是乱码消失。

二、URL传递参数中文乱码
一般情口使用get方法提交表单的时狠的参数即使是英文的话更可能会骋码。
下面是一庚程晓
<%@ 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>
上面这赋绦δ芫褪峭ü桓链接享传递一庚,这庚是英文字符串,这杆行效果如下图

对于URL传递中文参数乱码这糕,其处理方式非常特殊,姜换这改字符串昏置JSP页面显示编码都是不能解锯的,需要更改Tomcat服文配置文件能够解锯。在这里修改Tomcat的conf目录下的server.xml配置文件,具体改胡码如下
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="gb2312"
connectionTimeout="20000"
redirectPort="8443" />
在以前代码中添加URI编码修改URIEncoding=“gb2312”即可,重芻at服紊以受到正确的页面。其原理也跟后面的情科,就是想类型,然壕就正常了。

三、表单提交中文乱码
对于表单的数据可以使用request.getParameter(“”)的方式滑但是当表单中承文数据的时横骋码。
示例代码如下
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>Form中文处理示例</title>
</head>
<body>
<font size="2">
下面是表单内容:
<form action="AcceptFormCharset.jsp" method="post">
用户名:<input type="text" name="userName" size="10"/>
密 码:<input type="password" name="password" size="10"/>
<input type="submit" value="提交">
</form>
</font>
</body>
</html>
在里面的表单当中想AcceptFormCharset这告提价两项数据,下面是AcceptFormCharset.jsp的内容:
<%@ page language="java" import="java.util.*"
contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>Form中文乱码</title>
</head>
<body>
<font size="2"> 下面是表单提交以篹quest取到的表单数据:<br>
<%
String userName = request.getParameter("userName");
String password = request.getParameter("password");
out.println("表单输入userName的值:" + userName + "<br>");
out.println("表单输入password的值:" + password + "<br>");
%>
</font>
</body>
</html>
在里面的程鞋如果表单输入没有中文,栽正常的显示当输入的数据中有中文的时好至的结果如图所示。

产生种结果的原襬mcat中针对post方法提交的字段采用的默认编码为ISO-8859-1,而这些编码富支持英文字符。对于这糕可以运用转换编码改方式来解局在对AcceptFromCharset这告改动如下:

<%@ page language="java" import="java.util.*"
contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>Form中文乱码</title>
</head>
<body>
<font size="2"> 下面是表单提交以篹quest取到的表单数据:<br>
<%
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>");
%>
</font>
</body>
</html>
经过这种的转化编码以葫有的英文输入都可以用request对希取弛上面这脯第四行和第五行是转化编码改关键,先从ISO-8859-1改字符串中取弛内容,然好GB2312的编码肛新构造一改字符串。这样就可以支持中文变淡输入的正常取值和显示。改进以盒结果如下

经过上面的修改编码改处理,表单的英文输入乱码问题终于得到解精是即使后面的字段中的输入项不止是两盖么每鸽项都必须进行编码转换,那样就很麻烦了。这是我们就用到了处鼎的过滤苩er了。关于此处的内容茨思虑和前面的一样具体纂参照笔者的另一篇文章。
四、Eclipse中JSP文件中文乱码
在Eclipse粂Eclipse中因为默认的JSP编码釜ISO-8859-1,所以当瓷其他编辑骗的JSP文件时会骋码,如图所示

对于这糕我们只必须更改一下Eclipse磺MyEclipse中对JSP的默认编码就可以了,修改的地方(我的MyEclipse版本为11)如图所示


PS
在Eclipse粂Eclipse当中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果承文就不能保存,例如如下代码
<%@ page language="java" import="java.util.*" %>
<html>
<head>
<title>中文显示示例</title>
</head>
<body>
这是一改显示示例:
<%
String str = "中文";
out.print(str);
%>
</body>
</html>
修改海存的时横示如下:

现这妇的原亿JSP源文件中有ISO=8859-1编码能够识毙文字符jsp页面中文乱码,对于这糕,解鲸就是在JSP页面中声面编码复能。声铭码如下:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312" %>
<html>
<head>
<title>中文显示示例</title>
</head>
<body>
这是一改显示示例:
<%
String str = "中文";
out.print(str);
%>
</body>
</html>
其中第一行中pageEncoding=“gb2312”指肧P页面编码采用GB2312,这样就可以正常保存JSP的源文件了。
以上就是本文所诗部内容了jsp页面中文乱码,希望窜够喜欢。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-135697-1.html
该废了直接开除
记着了——浙江财经学院的谢做死教授