WEB开发保存数据中文乱码问题

来源:互联网 发布:最全专业网络投资理财 编辑:程序博客网 时间:2024/05/02 04:40

这几天简单的学习了一下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 stubcharacterEncoding=null;}public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {// TODO Auto-generated method stubif(enabled||characterEncoding!=null){arg0.setCharacterEncoding(characterEncoding);arg1.setCharacterEncoding(characterEncoding);}arg2.doFilter(arg0, arg1);}public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stubcharacterEncoding = 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写法还不一致,就是里面的“&”要写成“&amp;”

到此,我遇到的就是这些,如果以后遇到新的,我会更新的





0 0