字符处理

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>

希望对你有帮助!

你可能感兴趣的:(eclipse,xml,Web,servlet)