`
fp_moon
  • 浏览: 981763 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSP中文乱码问题解决方法

阅读更多

 

在Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考:
(在各种编码方案中,UTF-8、GBK、GB2312都是支持中文显示的。只是GBK比GB2312支持跟多的字符)
一、JSP页面显示乱码
二、URL传递参数中文乱码
三、表单提交中文时出现乱码
四、数据库连接
一、JSP页面显示乱码
Jsp文件页面显示乱码,这种情况比较好处理,在页面的Page指令加上如下一项就OK了:
<%@ page contentType="text/html; charset=gb2312"%>
注:如果是HTML页面显示乱码,则加上:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
二、URL传递参数中文乱码
当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,
解决方法一如下:
  在参数传递时对参数编码,比如
 
Java代码
1. RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords) 
 RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
  然后在接收参数页面使用如下语句接收
Java代码
1.  keywords=new String(request.getParameter("keywords").getBytes("iso8859_1")); 
  keywords=new String(request.getParameter("keywords").getBytes("iso8859_1"));
解决方法二:
修改tomcat的server.xml文件中URIEncoding。

Xml代码
1.<Connector 
2.debug="0" 
3.acceptCount="100" 
4.connectionTimeout="20000" 
5.disableUploadTimeout="true" 
6.port="80" 
7.redirectPort="8443" 
8.enableLookups="false" 
9.minSpareThreads="25" 
10.maxSpareThreads="75" 
11.maxThreads="150" 
12.maxPostSize="0" 
13.URIEncoding="GBK" 
14.> 
15.</Connector> 
<Connector
debug="0"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
port="80"
redirectPort="8443"
enableLookups="false"
minSpareThreads="25"
maxSpareThreads="75"
maxThreads="150"
maxPostSize="0"
URIEncoding="GBK"
>
</Connector>
这个方法主要针对从url中获取字符串的问题。
在tomcat5.0及以上版本,post和get方法在处理编码时有所不同。如果你在url中获取中文就会出现?号。但在tomcat4.1版本没有问题,

因为tomcat4.1的post和get方法在处理编码时是一样的。
三、表单提交中文时出现乱码
Jsp页面采用表单提交时,提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,

而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding("gb2312")对

请求进行统一编码,就实现了中文的正常显示。
这是其中的一种作法,当页面较少时还好,如果页面较多,我每添加新的页面就要加上这句话,所以可以采用过滤器来解决,具体解决步骤如

下:

首先写一个过滤器类,代码如下:

Java代码
1.import java.io.IOException;  
2.import javax.servlet.*;  
3.public class SetCharacterEncodingFilter implements Filter {  
4.        private String encoding = null;  
5.        private FilterConfig filterConfig = null;  
6. 
7.public void init(FilterConfig filterConfig) throws ServletException {  
8.        this.filterConfig=filterConfig;  
9.        this.encoding=filterConfig.getInitParameter("encoding");  
10.        }  
11. 
12.        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,

ServletException {  
13.           if (request.getCharacterEncoding() == null) {  
14.               String encoding = getEncoding();  
15.           if (encoding != null)  
16.               request.setCharacterEncoding(encoding);  
17.           }  
18.           chain.doFilter(request, response);  
19.        }  
20. 
21.        public void destroy() {  
22.             this.encoding = null;  
23.             this.filterConfig = null;  
24.        }  
25. 
26.        public String getEncoding() {  
27.            return encoding;  
28.        }  
29.} 
import java.io.IOException;
import javax.servlet.*;
public class SetCharacterEncodingFilter implements Filter {
  private String encoding = null;
  private FilterConfig filterConfig = null;

public void init(FilterConfig filterConfig) throws ServletException {
  this.filterConfig=filterConfig;
  this.encoding=filterConfig.getInitParameter("encoding");
  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws

IOException, ServletException {
     if (request.getCharacterEncoding() == null) {
         String encoding = getEncoding();
     if (encoding != null)
         request.setCharacterEncoding(encoding);
     }
     chain.doFilter(request, response);
  }

  public void destroy() {
       this.encoding = null;
       this.filterConfig = null;
  }

  public String getEncoding() {
   return encoding;
  }
}
然后再在web.xml加上

Java代码
1.<filter>  
2.    <filter-name>SetCharacterEncodingFilter</filter-name>  
3.    <filter-class>filter.SetCharacterEncodingFilter</filter-class>  
4.    <init-param>  
5.        <param-name>encoding</param-name>  
6.        <param-value>UTF-8</param-value>  
7.    </init-param>  
8.  </filter>    
9.  <filter-mapping>  
10.    <filter-name>SetCharacterEncodingFilter</filter-name>  
11.    <url-pattern>/*</url-pattern>  
12.  </filter-mapping> 
<filter>
   <filter-name>SetCharacterEncodingFilter</filter-name>
   <filter-class>filter.SetCharacterEncodingFilter</filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
   </init-param>
  </filter> 
  <filter-mapping>
   <filter-name>SetCharacterEncodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
<!-- Set Character Encoding-->这样所有的请求都将交由这个过滤器处理下,这样无论我们添加多少个页面都可以放心了,不用总考虑要

加那么一句代码了.
四、数据库连接
在存取数据库时发生乱码现象,这种现象比较郁闷,处理起来相对复杂一点.
首先要在数据存入数据库时,进行如下编码的转换:如我们要把含有中文的字符串存入数据库,首先:

Java代码
1.String s=request.getParameter("author");       
2.    String author=new  String(s.getBytes("ISO8859_1"),"gb2312");  
String s=request.getParameter("author"); 
 String author=new  String(s.getBytes("ISO8859_1"),"gb2312");
在从数据库取出展示到页面时,也要经过如下转换:

Java代码
1.String s=rs.getString("author");   
2.        Stringauthor=new String(s.getBytes("GB2312"),"ISO8859_1"); 
String s=rs.getString("author");
      Stringauthor=new String(s.getBytes("GB2312"),"ISO8859_1");

以上是我总结的对三种Jsp文件中文乱码的处理方法,希望对大家有所帮助.
五、用js提交表单

Java代码
1.在提交前  
2.Var str = encodeURI(s);   //encodeURI默认是以UTF-8编码
3.接收时  
4.String str = java.net.URLDecoder.decode(s,”utf-8”); 
在提交前
Var str = encodeURI(s);
接收时
String str = java.net.URLDecoder.decode(s,”utf-8”);
六。页面传值

Java代码
1.传:=new String("参数1".getBytes("GBK"), "ISO8859-1")%>  
2.取:=new String(request.getParameter("param1").getBytes(  
3.                            "ISO8859-1"), "GBK") 

分享到:
评论

相关推荐

    JSP中文乱码问题解决方法小结

    总之,解决JSP中文乱码问题主要在于确定并统一整个系统中的字符集和编码方式。开发者需要关注每个环节,从数据库设置到页面编码,再到参数传递,确保每个步骤都正确处理了字符编码,才能有效地避免乱码现象的发生。

    解决JSP中文乱码问题

    下面我们将详细讨论 JSP 中文乱码问题的成因和解决方法。 JSP 中文乱码问题的成因 JSP 中文乱码问题的成因主要有两方面,一是 Java 和 JSP 文件本身编译时产生的乱码问题,二是 Java 程序于其他媒介交互产生的乱码...

    JSP中文乱码问题解决办法

    JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示乱码的现象。这种问题的解决办法可以从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交...

    jsp中文乱码问题解决

    解决jsp中文乱码问题的方法有多种,下面我们将讨论几种常见的解决方法。 一、页面中文乱码解决 对于jsp页面中文乱码问题,可以通过修改jsp页面的编码方式来解决。我们可以在jsp页面的开头添加 ”utf-8” %&gt;指令,...

    JSP中文乱码问题解决方法.

    以下是一些解决JSP中文乱码问题的关键知识点: 1. **字符编码理解**: - **Unicode**:一种通用的字符编码标准,包含了世界上大部分语言的字符。 - **UTF-8**:最常用的Unicode编码,广泛用于Web应用,支持中文...

    jsp中文乱码问题jsp中文乱码问题详解

    jsp中文乱码问题详解 在jsp中文乱码问题中,乱码的出现是由于编码格式不一致所导致的。在jsp文件中,存在三个地方的编码格式:jsp文件的存储格式、解码格式和控制浏览器的解码方式。如果这三个地方的编码格式不一致...

    JSP中文乱码问题解决总结

    通过以上方法,我们可以有效地解决JSP中文乱码问题。在实践中,理解字符集的工作原理,以及其在不同环节中的应用,对于预防和解决乱码问题至关重要。希望这个总结能帮助到大家,减少在查找和调试这类问题上花费的...

    jsp中文乱码的解决方案

    文档《JSP各种乱码的处理(一).doc》和《JSP各种乱码的处理(二).doc》中可能详细列举了各种JSP乱码问题的实例及解决方法,包括但不限于文件上传、读取流、数据库操作等方面,建议参考学习,以便更全面地理解并解决...

    jsp中文乱码 jsp mysql 乱码的解决方法.docx

    jsp中文乱码 jsp mysql 乱码的解决方法 jsp 中文乱码是指在使用 JSP 页面将中文数据添加到 MySql 数据库中或从 mysql 中读取中文时出现乱码的问题。这是由于字符编码不全造成的。因此,了解乱码的产生过程是解决...

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

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

    JSP中文乱码问题最优解决方法

    ### JSP中文乱码问题最优解决方法 在Web开发中,特别是使用Java Server Pages(JSP)进行网页设计时,中文乱码问题是一个常见的技术挑战。本文将详细探讨如何有效地解决JSP页面中的中文乱码问题,并提供具体的解决...

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

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

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

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

    jsp用过滤器解决中文乱码问题的方法.docx

    jsp 用过滤器解决中文乱码问题的方法 jsp(JavaServer Pages)是一种广泛应用于Web开发的技术,但是在实际开发中,我们经常会遇到中文乱码问题。为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要...

    java乱码问题解决方法

    Java 乱码问题是 Java 开发中常见的问题之一,解决这个问题需要了解 Java 的编码方式、JSP 中文乱码问题、Tomcat 5.5 中文乱码问题、JDBC ODBC Bridge 的 Bug 及其解决方法、Solaris 下 Servlet 编程的中文问题及...

    JSP中解决中文乱码的万能方法

    ### JSP中解决中文乱码的万能方法 在JSP开发过程中,中文乱码问题是一个常见的技术难题,尤其在处理客户端与服务器之间的数据...只要按照以上介绍的方法逐一排查和调整,便可以有效地解决JSP项目中的中文乱码问题。

    JSP中文乱码常见3个例子及其解决方法.docx

    本文将详细介绍三个常见的JSP中文乱码例子及其解决方法。 实例一:JSP页面显示时的乱码 在JSP页面直接显示中文时,如果未指定字符集,可能会出现乱码。例如,一个包含中文诗词的JSP页面,如下所示: ```jsp ...

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

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

Global site tag (gtag.js) - Google Analytics