`

JSP开发中文乱码问题

阅读更多

文章主要针对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 开发过程中,经常出现中文乱码的问题,可能一至困扰着大家。下面我们将详细讨论 JSP 中文乱码问题的成因和解决方法。 JSP 中文乱码问题的成因 JSP 中文乱码问题...

    jsp SmartUpload 中文乱码问题解决.docx

    jsp SmartUpload 中文乱码问题解决 jsp SmartUpload 中文乱码问题解决是指在使用 jsp 的 SmartUpload 组件进行文件上传下载时,遇到中文乱码问题的解决方法。在这篇文章中,我们将介绍如何解决 jsp 中 SmartUpload ...

    解决jsp页面中文乱码问题

    通过以上步骤,大部分JSP页面的中文乱码问题都能得到解决。但实际情况可能更复杂,需要根据具体错误现象进行排查。如果使用了`demo`这个压缩包,它可能包含示例代码或工具,帮助我们更直观地理解并实践上述解决方案...

    JSP中文乱码问题解决总结

    在IT行业中,尤其是在Web开发领域,JSP(JavaServer Pages)是常见的动态网页技术,而中文乱码问题一直是开发者们经常遇到的困扰。本篇文章将深入探讨JSP中文乱码问题的原因、解决策略以及预防措施。 一、乱码产生...

    Servlet及jsp解决中文乱码问题

    ### Servlet及JSP解决中文乱码问题 #### 一、引言 在Web开发中,中文乱码问题一直是困扰开发者的一大难题。特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况...

    解决jsp+servlet开发中的中文乱码问题

    ### 解决JSP+Servlet开发中的中文乱码问题 #### 概述 在基于JSP(Java Server Pages)和Servlet技术的Java Web应用开发过程中,中文乱码问题一直是困扰开发者的一大难题。由于Java Web应用程序涉及多个组件之间的...

    jsp中文乱码问题解决

    jsp中文乱码问题是jsp开发中常见的问题之一,本文将围绕jsp中文乱码问题的解决展开讨论。首先,我们需要了解jsp中文乱码问题产生的原因,然后再讨论解决方案。 jsp中文乱码问题产生的原因是由于jsp页面的编码方式和...

    JSP中文乱码问题分析及处理方法

    ### JSP中文乱码问题分析及处理方法 #### 一、问题根源剖析 JSP(Java Server Pages)作为Web开发中的一种技术,广泛应用于动态网页的生成。然而,在处理中文字符时,JSP经常会遇到“乱码”问题,即中文字符无法...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    在JavaWeb开发中,尤其是涉及到JSP页面时,乱码问题常常困扰着开发者。这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何...

    JSP页面中文乱码几个解决办法

    总结来说,解决JSP页面中文乱码问题的关键在于保持字符编码的一致性,从编辑器保存文件的编码、JSP页面的编码声明、Servlet的响应编码、POST请求的参数编码,到服务器处理GET请求的编码,都需要进行适配和统一。...

    JSP中汉字乱码现象分析与解决.pdf

    在JSP开发过程中,汉字乱码问题是一个常见的技术挑战,它不仅影响用户体验,还可能阻碍项目的顺利进行。本文详细探讨了JSP中汉字乱码现象的原因,并提供了一系列有效的解决方案。通过对JSP文件与响应编码方式的设置...

    Eclipse 开发JSP中文乱码解决方案

    在使用Eclipse进行JSP开发时,中文乱码是一个常见的问题,尤其是在处理包含中文字符的文件时。Eclipse作为一个强大的Java集成开发环境,虽然功能强大,但如果没有正确配置,可能会出现显示中文字符时的乱码现象。...

    JSP汉字乱码解决大全

    中文乱码问题是JSP开发中常见的问题之一,通过对请求参数、响应输出、服务器配置以及页面内部编码的综合调整,可以有效地避免此类问题的发生。希望本文提供的解决方案能够帮助开发者们更好地应对实际开发中的乱码...

    java+jsp+mysql开发 web项目处理中文乱码问题

    处理 Java+jsp+mysql 开发 web 项目中文乱码问题 在 Java+jsp+mysql 开发 web 项目中,中文乱码问题是一个常见的问题,影响着项目的正常运行。下面我们将从四个方面来解决中文乱码问题: 一、Jsp 输出中文的乱码...

    如何解决JSP页面显示乱码问题

    ### 如何解决JSP页面显示乱码问题 在JSP(Java Server Pages)开发中,中文乱码问题一直是开发者常见的挑战之一。...通过上述方法,可以有效地解决JSP开发中的中文乱码问题,提高系统的可用性和用户体验。

    几种常用解决jsp中文乱码的方案

    JSP 中文乱码是动态网站开发中经常遇到的问题,本文将从产生 JSP 中文乱码的四种类型入手,分析乱码产生的原因,并给出消除乱码的具体方法。 一、页面中文乱码的处理 JSP 采用 ISO-8859-1 作为默认的页面字符编码...

    JSP中文乱码问题解决办法

    在IT领域,尤其是在Web开发中,JSP(JavaServer Pages)中文乱码问题是一个常见的困扰。JSP是一种基于Java的动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的动态渲染。当涉及到中文字符时,...

    jsp乱码解决方案 本方案解决了jsp常见的乱码问题

    通过上述方法,我们可以有效地解决JSP开发过程中常见的乱码问题。需要注意的是,在实际应用中还需根据具体情况选择合适的解决方案,并尽可能地统一整个系统的字符编码,以减少因编码不一致带来的问题。此外,随着...

    如何解决MySql-JSP中文乱码问题

    在开发Web应用时,尤其是使用Java技术栈如JSP、Servlet与MySQL数据库交互时,中文乱码问题常常困扰着开发者。这个问题的出现主要是由于字符编码不一致导致的,包括数据库编码、连接编码、页面编码等多个环节。下面...

    jsp eclipse乱码问题

    ### JSP Eclipse 乱码问题解析与解决方案 在开发基于Java的Web应用时,经常会遇到JSP页面在Eclipse环境中出现乱码的情况。这不仅会影响程序的正常运行,还可能导致用户体验下降。本文将针对JSP在Eclipse中的乱码...

Global site tag (gtag.js) - Google Analytics