这几天简单的学习了一下SSH,今天尝试用SSH做一个简单的用户管理Demo,在测试添加用户,也就是往数据库里添加数据的时候,出现了乱码,我很诧异,并不是因为乱码,而是因为使用Hibernate还出现乱码,于是我百度了一下,发现我是out了,SSH出现乱码也是很正常的。。。好吧我把我遇到能解决乱码的问题总结一下
如果使用的是servlet开发web,直接在servlet里编写
request.setCharacterEncoding(characterEncoding);
使用字符过滤配置
public class FilterEconding implements Filter {
private String characterEncoding;
private boolean enabled;
public void destroy() {
// TODO Auto-generated method stub
characterEncoding=null;
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
if(enabled||characterEncoding!=null){
arg0.setCharacterEncoding(characterEncoding);
arg1.setCharacterEncoding(characterEncoding);
}
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
characterEncoding = arg0.getInitParameter("characterEncoding");
enabled="true".equalsIgnoreCase(characterEncoding.trim())||"1".equalsIgnoreCase(characterEncoding.trim());
}
}
相对应的web.xml
<filter>
<filter-name>filterEconding</filter-name>
<filter-class>com.util.FilterEconding</filter-class>
<init-param>
<param-name>characterEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>enable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filterEconding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上的是代码处理的,
既然要避免乱码,那么凡是牵扯到编码都要统一
所以,jsp页面要设置UTF-8(以UTF-8为例)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
然后就是数据库编码,这一点也很重要
下面是mysql的配置
以上我都做完之后,保存数据依然出现乱码,然后我又上网找,到处找发现了链接URL
property name="url" value="jdbc:mysql://localhost:3306/studentDB?useUnicode=true&characterEncoding=utf-8">
链接数据库编码,这一点当时没有想到,还有就是在不同的项目中,URL写法还不一致,就是里面的
“&”要写成“&”
到此,我遇到的就是这些,如果以后遇到新的,我会更新的