读书人

字符处置

发布时间: 2012-10-11 10:16:10 作者: rapoo

字符处理

GET方式传中文参数给Struts2 Action时出现乱码? 如:xxxAction.action?name=王? 如何解决呢?

?

严格来说, URL的编码分成2部分。 URI的编码, 就是?之前的部分, 是UTF8表示的。 ? 后面的是内容决定的。 因此。但是, 中文在URL里直接送, 很容易出问题。 特别是经过apche, mod jk后, 一般会把中文部分使用URLEncode来编码。 sdh5724 (资深程序员) 2008-12-29 server.xml - URIEncoding = "GBK or UTF-8"
不过依赖了容器,不爽
还是URLEncode好 gembler (中级程序员) 2008-12-29 写一个过滤器 filter,设置编码utf-8!
在eclipse建一个servlet,实现filter接口!
然后在web.xml 中servlet配置改成filter

package com.liuwg.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;

public class EnconfigFilter implements Filter {

private String enconfig = null;

public EnconfigFilter() {
super();
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
if(enconfig != null)
{
request.setCharacterEncoding(enconfig);//设置编码过滤
response.setCharacterEncoding(enconfig);//设置编码过滤
filterChain.doFilter(request, response);
}
}

public void init(FilterConfig filterConfig) throws ServletException {
enconfig = filterConfig.getInitParameter("enconfig");//从web.xml文件中获得配置的属性(在web.xml文件中编码设置)
}



public void destroy() {
enconfig = null;
}

}


web.xml文件中
<filter>
? <description>filter enconfig</description>
? <display-name>filter enconfig</display-name>
? <filter-name>enconfigFilter</filter-name>
? <filter-class>com.liuwg.filter.EnconfigFilter</filter-class>
? <init-param>
? <param-name>enconfig</param-name>
? <param-value>utf-8</param-value>
? </init-param>
? </filter>
? <filter-mapping>
? <filter-name>enconfigFilter</filter-name>
? <url-pattern>/*.action</url-pattern>
? </filter-mapping>

希望对你有帮助!

读书人网 >软件架构设计

热点推荐