关闭

java web 乱码 问题

发表于:2013-8-14 10:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:鸦芽    来源:51Testing软件测试网采编

  2、数据库bean配置

  主要针对与数据库交互时产生的乱码问题,例如插入中文记录或读取中文数据。

<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/newfang?useUnicode=true&amp;characterEncoding=gbk&amp;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;
}
}

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号