随笔 - 147  文章 - 71  trackbacks - 0
<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(1)

随笔分类(146)

随笔档案(147)

文章分类(28)

文章档案(28)

喜欢的Blog

搜索

  •  

最新评论

阅读排行榜

评论排行榜

一、确保jsp页面中<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>和<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">编码为UTF-8;

二、post方式

配置字符过滤器

package com.util.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
* 采用Filter统一设置处理字符集 
@author songfeng
@version 1.0
* Apr 1, 2010
*/

public class CharsetEncodingFilter implements Filter {

private String encoding = "UTF-8";

public void destroy() {
}


public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
    FilterChain filterChain) 
throws IOException, ServletException {
   servletRequest.setCharacterEncoding(
this.encoding);
   filterChain.doFilter(servletRequest, servletResponse);
}


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

}

配置web.xml

<filter>
   
<filter-name>CharsetEncodingFilter</filter-name>
   
<filter-class>com.util.filter.CharsetEncodingFilter</filter-class>
   
<init-param>
    
<param-name>encoding</param-name>
    
<param-value>UTF-8</param-value>
   
</init-param>
</filter>

<filter-mapping>
   
<filter-name>CharsetEncodingFilter</filter-name>
   
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

<filter-mapping>
   
<filter-name>CharsetEncodingFilter</filter-name>
   
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>

三、get方法

1、配置tomcat中server.xml

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" disableUploadTimeout="true" URIEncoding="UTF-8"/>

2、在要传递参数的时候进行转码(如不转码奇数中文字符最后一个字符乱码)

(1)JSP传值方式:
跳转页:
<a href=info.jsp?info="<%= java.net.URLEncoder.encode("中文汉字","GBK") %>">跳转</a>
接收页
<%
     String info_str = new String(request.getParameter("info"),"ISO8859-1");
     out.print(info_str); //输出接收值
%>
(2)JS传值方式:
先用encodeURI()进行编码
var p = "你好吗?";
var url = "aaa.jsp?param=" + encodeURI(p);
然后在服务器端要解码
<%
String param = request.getParameter("p");
param = new String(param.getBytes("ISO-8859-1"),"UTF-8");
%>
四、ajax乱码

在要传递中文参数的js中转码:encodeURIComponent(“×××”)

posted on 2011-10-26 20:46 飞翔天使 阅读(4570) 评论(2)  编辑  收藏 所属分类: JSP

FeedBack:
# re: jsp中UTF-8乱码解决方案 2013-12-17 09:48 Dooun
感谢分享  回复  更多评论
  
# re: jsp中UTF-8乱码解决方案 2013-12-17 09:55 Dooun
我有个问题,我看教程里说的是有pageEncoding就不需要charset了不是吗,这两个里面不是有一个是优先的吗?

还有,不知道楼主是否了解MySQL与JSP的编码同一问题(不用GBK,用utf-8,因为要处理多国语言)
游客登录,方便的话
QQ:2818429259
谢谢  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: