2、数据库bean配置
主要针对与数据库交互时产生的乱码问题,例如插入中文记录或读取中文数据。
<property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/newfang?useUnicode=true&;characterEncoding=gbk&;autoReconnect=true</value> </property> |
3、代码中局部解决乱码问题
主要用于解决个别乱码问题,例如网页显示时中文均显示正常除一两条语句外,那么针对这一两条语句的乱码问题可用该方法。
qString = new String(qString.getBytes("ISO8859_1"), "GBK");
或 qString = URLEncoder.encode(qString, "GBK"); //java url 编码方法
4、web.xml配置,添加filter过滤器
用于处理全站乱码问题,其实主要也是用于action与jsp页面交互时使用。
<!-- 用于解决中文乱码问题 --> <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>com.qa.util.SetEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> SetEncodingFilter代码: package com.qa.util; import javax.servlet.*; import java.io.*; public class SetEncodingFilter implements Filter { protected String encoding=null;//定义缺省字符编码方式 protected boolean ignore=true;//定义客户端指定的编码方式是否应被忽略 protected FilterConfig filterConfig=null;//定义过滤器配置对象,若为null,则说明过滤器未配置 public void destroy()//停止过滤器的工作 { this.encoding=null; this.filterConfig=null; } //设置字符编码 public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,ServletException { if(ignore||(req.getCharacterEncoding()==null)) { req.setCharacterEncoding(selectEncoding(req)); } chain.doFilter(req,res); } //启动过滤器 public void init(FilterConfig filterConfig)throws ServletException { this.filterConfig=filterConfig; this.encoding=filterConfig.getInitParameter("encoding"); String value=filterConfig.getInitParameter("ignore"); if(value==null) this.ignore=true; else if(value.equalsIgnoreCase("true") ||value.equalsIgnoreCase("yes")) this.ignore=true; else this.ignore=false; } //选择合适的字符编码方式 protected String selectEncoding(ServletRequest req) { return this.encoding; } //返回filterConfig对象 public FilterConfig getFilterConfig() { return filterConfig; } //设置filterConfig对象 public void setFilterConfig(FilterConfig filterConfig) { this.filterConfig=filterConfig; } } |