文章主要针对Tomcat中JSP开发容易出现的中文乱码问题。
1、JSP中输出中文的乱码问题
JSP输出中文,即直接在JSP中输出中文,或者给变量赋中文值再输出等。
原因:
这种情况下的乱码问题往往是因为没有给JSP页面制定显示字符的编码方式。
解决:
在JSP页面头部加上语句<%@ page contentType="text/html; charset=utf-8" %>(在Servlet页面中使用http.ServletResponse.setContentType("text/html; charset=gbk")),最好同时在JSP页面的<head>部门加上<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
2、获取表单提交的数据时(POST方式)
代码如下:
<!-- radiocheck.jsp -->
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>单选按钮与复选框</title>
</head>
<body>
<%
String str1=request.getParameter("radiobutton");
String str2[]=request.getParameterValues("check");
if(str1!=null && str2!=null)
{
//str1=new String(str1.getBytes("ISO-8859-1"),"utf-8");
out.println("你经常使用的是"+str1+"上网<br>");
out.println("经常上网的地方是:");
if(str2!=null)
{
for(int i=0; i<str2.length; i++)
{
out.println(str2[i]+" ");
}
}
}
%>
<form name="form1" method="post" action="">
<p>你使用什么方式上网</p>
<p><input name="radiobutton" type="radio" value="ASDL" checked>ASDL</p>
<p><input name="radiobutton" type="radio" value="拨号上网">拨号上网</p>
<p><input name="radiobutton" type="radio" value="无线接入">无线接入</p>
<p><input name="radiobutton" type="radio" value="DDN专线">DDN专线</p>
<p>你经常在什么地方上网</p>
<p><input name="check" type="checkbox" value="home">home</p>
<p><input name="check" type="checkbox" value="school">school</p>
<p><input name="check" type="checkbox" value="Internet Bar">Internet Bar</p>
<p><input name="submit" type="submit" value="Submit"></p>
</form>
</body>
</html>
原因:
在没有加任何其它处理之前,用request.getParameter(paramName) 获取表单提交中的数据,且表单数据中含有中文时,返回的字符串会出现乱码。出现这种情况的原因是Tomcat的J2EE实现对表单提交,即以POST方式提交的参数采用默认的ISO-8859-1来处理。
解决:
方法一:
不修改其他设置,只是在将表单中的中文数据提取出来后再转换编码。
例如:代码中对于String str1=request.getParameter("radiobutton");进行转换编码语句如下:
str1=new String(str1.getBytes("ISO-8859-1"),"utf-8");
这种方法只是从一个局部来考虑,如果这样的地方太多,就不得不将这条语句重复写很多次,在比较大的项目中,就需要用方法二。
方法二:
使用过滤器(filter),即让对所有页面的请求都通过一个Filter,将处理字符集设置为utf-8。具体做法如下:在Tomcat的\webapps\examples\(如:F:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\examples\WEB-INF\classes\filters)有一个完整的例子,也可以参考其中web.xml和SetCharacterEncodingFilter的配置。
A:首先将%Tomcat%\webapps\examples\WEB-INF\classes\filters\目录下的文件SetCharacterEncodingFilter.java拷贝到自己Eclipse工程下的src文件里,同时要修改其中的包packet路径,改成正确的packet路径。
B:然后将web.xml文件<web-app>后面添加如下代码:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>com.b2b.alibaba.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
C:编译运行,所有乱码问题解决。
3、URL中的中文问题(GET请求)
对于直接通过URL 中传递中文参数,如“http://localhost:8080/liuxl/jsp/radiocheck.jsp?str1=中文”这样的GET请求,在服务端用request.getParameter("paramName")时返回的是乱码。按以上的两种方法都不管用。
例如:
代码同上,只需将<form name="form1" method="post" action="">修改成 <form name="form1" method="get" action="">即可。
原因:
Tomcat中以GET方式提交的请求对query-string处理时采用了和POST不一样的处理方式。
解决:
打开Tomcat安装目录下的/conf/server.xml文件(如:F:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml),找到Connector块,往其中添加URIEncoding="utf-8",添加后完整的Connector块代码如下:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8" />
分享到:
相关推荐
大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。
jsp SmartUpload 中文乱码问题解决.docx
解决jsp+servlet开发中的中文乱码问题
jsp传值中文乱码问题解决方法示例介绍.docx
本文档详细地介绍了如何解决MySql数据库中的中文乱码问题,此问题的解决将极大地帮助基于MySql的PHP编程、JSP编程、Servlet编程及C#或.Net编程!测试过的开发平台包括 Netbeans和Eclipse。测试过的服务器包括Apache、...
本ppt内容主要是解决方案Eclipse 开发JSP中文乱码问题,为初学使用ECLIPSE开发JAVA WEB项目的人提供方便。
在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下是我在软件开发中遇到的乱码问题以及解决方法。
Jsp输出中文的乱码问题,获取表单提交的数据时的中文乱码问题,url中的中文问题,数据库中采取的编码方式不同于utf-8怎么办
中文乱码是jsp动态网站开发中经常遇到的问题,该文从产生jsp中文乱码的范例消除乱码的具体方案,具有实用性和易操作性。
以前有关JSP技术中文乱码的研究,只是侧重于对常见的几种中文乱码情况分析,并从网页代码方面进行研究,然后给出相应的代码,缺少对造成中文乱码原因的研究。本文从造成乱码的根本原因入手进行分析,以JSP技术工作过程为...
大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。 一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接时...
mysql+jsp+SSH网站开发中文乱码解决方案
用eclipse集成开发环境, jsp 过滤器——解决中文乱码问题
jspSmartUpload组件是jsp中的文件上传组件,但是其官方网站已经关闭,由于其是外国人开发,故存在中文乱码问题,我将它的源文件重新修改编译,已解决中文乱码问题。
JSP利用过滤器解决request中文乱码问题.docx
最近做了jsp项目,要用到上传和下载,从网上下了一个smartupload项目文件,封成jar包之后使用发现会出现中文乱码问题,后来网上一查,发现出现这个问题的人还真多,很多博客里面只是说明了如何解决,并没有具体实现...
讲述javaweb开发中的jsp乱码问题 get、post的区别 http协议的图解
JSP用过滤器解决request getParameter中文乱码问题.docx
在利用Servlet/JSP技术开发java Web应用程序的时候,不可避免的会遇到中文乱码问题,本文首先介绍了Web应用中常用的编码方式,然后分析了J2EE平台下Web应用中文乱码问题产生的原因,并在此基础上针对不同情况提出了解决...
JSP出现中文乱码问题解决方法详解.docx