中文乱码?——字符过滤器的配置
2011-05-08 20:10
309 查看
我们在做web项目时,常常会遇到烦恼的中文乱码问题,现在我们尝试一下用字符过滤器解决这个问题。
首先,字符过滤器的代码如下:
类似的过滤器代码网上很多,大家可以自己搜搜看。然后我们需要在web.xml中加一段配置
这要就好了。
首先,字符过滤器的代码如下:
package com.technology.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; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; /** * <pre> * 过滤器,对中文字符进行编�? * </pre> * * 对HttpServletRequestWrapper类进行扩�??, 在不影响原来的功能并能提供所有的HttpServletRequest * 接口中的功能,统�??的对默认设置下的中文问题进行解决,实际操作就是将新生成的Request对象替换页面中请求的request对象即可 */ public class EncodingFilter implements Filter { // 编码格式 private String encoding = null; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; if (httpRequest.getMethod().equals("GET")) { request = new Request(httpRequest); } request.setCharacterEncoding(this.encoding); chain.doFilter(request, response); } /** * init 实现了接口javax.servlet.Filter.init * 意是获得web.xml中的参数名为encoding的�??,既utf-8 * <param-name>encoding</param-name><param-value>UTF-8</param-value> */ public void init(FilterConfig fc) throws ServletException { this.encoding = fc.getInitParameter("encoding"); } public void destroy() { this.encoding = null; } /** * 扩展HttpServletRequestWrapper�?? */ class Request extends HttpServletRequestWrapper { public Request(HttpServletRequest request) { super(request); } /** * 转换由表单读取的数据的内码, 从ISO字符转到GBK */ public String toChina(String input) { try { byte[] bytes = input.getBytes("ISO8859-1"); return new String(bytes, encoding); } catch (Exception ex) { } return null; } private HttpServletRequest getHttpServletRequest() { return (HttpServletRequest) super.getRequest(); } /** * 读取参数列表,修正了中文问题 * 重写javax.getParameterValues,截获jsp传过来的参数并用toChina()转成中文 */ public String[] getParameterValues(String name) { String values[] = getHttpServletRequest().getParameterValues(name); if (values != null) { for (int i = 0; i < values.length; i++) { values[i] = toChina(values[i]); } } return values; } } }
类似的过滤器代码网上很多,大家可以自己搜搜看。然后我们需要在web.xml中加一段配置
<!-- 字符过滤器配置 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>com.zjcontest.util.filter.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 字符过滤器配置 -->
这要就好了。
相关文章推荐
- SpringMVC中文乱码,字符过滤器配置
- spring中处理中文乱码的一个过滤器配置
- java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)
- struts2.2.3 配置中文乱码拦截过滤器
- 针对struts2配置了字符过滤器还是乱码的深入研究
- spring中处理中文乱码问题的过滤器配置
- 零xml配置Spring MVC过滤器解决中文参数乱码
- javaWeb开发中的字符过滤器配置--->让你二步轻松告别乱码
- struts2.2.3 配置中文乱码拦截过滤器 解决接收中文参数乱码问题
- SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
- springMVC配置了编码过滤器中文依旧乱码
- 配置Java Web中文乱码的过滤器
- java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)
- springMVC中post提交中文乱码过滤器配置
- ssh-配置自定义中文乱码过滤器和配置opensessionview解决懒加载
- struts2.2.3 配置中文乱码拦截过滤器 解决接收中文参数乱码问题
- struts2.2.3 配置中文乱码拦截过滤器
- <!--配置中文乱码的过滤器 -->
- struts2.2.3 配置中文乱码拦截过滤器
- 中文乱码问题解决,过滤器配置,get post提交乱码,filter,struts乱码,jsp乱码