中文乱码问题解决方法

  • 格式:doc
  • 大小:39.50 KB
  • 文档页数:4

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考:

(在各种编码方案中,UTF-8、GBK、GB2312都是支持中文显示的。只是GBK比GB2312支持跟多的字符)

一、JSP页面显示乱码

Jsp文件页面显示乱码,这种情况比较好处理,在页面的Page指令加上如下一项就OK了:

<%@ page contentType="text/html; charset=gb2312"%>

注:如果是HTML页面显示乱码,则加上:

二、URL传递参数中文乱码

当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,

解决方法一如下:

在参数传递时对参数编码,比如

RearshRes.jsp?keywords=" + .URLEncoder.encode(keywords) 然后在接收参数页面使用如下语句接收

keywords=new

String(request.getParameter("keywords").getBytes("ISO-8859-1"),"UTF-8") ;

解决方法二:

修改tomcat的server.xml文件中URIEncoding。

debug="0"

acceptCount="100"

connectionTimeout="20000"

disableUploadTimeout="true"

port="80"

redirectPort="8443"

enableLookups="false"

minSpareThreads="25"

maxSpareThreads="75"

maxThreads="150"

maxPostSize="0"

URIEncoding="GBK"

>

这个方法主要针对从url中获取字符串的问题。

在tomcat5.0及以上版本,post和get方法在处理编码时有所不同。如果你在url中获取中文就会出现?号。但在tomcat4.1版本没有问题,因为tomcat4.1的post和get方法在处理编码时是一样的。

三、表单提交中文时出现乱码

Jsp页面采用表单提交时,提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。

这是其中的一种作法,当页面较少时还好,如果页面较多,我每添加新的页面就要加上这句话,所以可以采用过滤器来解决,具体解决步骤如下:

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

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加上

SetCharacterEncodingFilter

filter.SetCharacterEncodingFilter

encoding

UTF-8

SetCharacterEncodingFilter

/*

这样所有的请求都将交由这个过滤器处理下,这样无论我们添加多少个页面都可以放心了,不用总考虑要加那么一句代码了.

四、数据库连接

在存取数据库时发生乱码现象,这种现象比较郁闷,处理起来相对复杂一点.

首先要在数据存入数据库时,进行如下编码的转换:如我们要把含有中文的字符串存入数据库,首先: