读书人

mysql不能存入汉字?解决方法

发布时间: 2012-01-10 21:26:50 作者: rapoo

mysql不能存入汉字?!!
各位大哥大姐好,我现在可以直接在数据库里面写汉字,但通过表单得到的汉字确无法在数据库正常显示,都是“???”形式,通过注册用户名“小明”进入数据库后显示??? 但在用“小明”还是可以登陆的,我jsp程序是utf8形式的。数据库设置utf8以及gb2312都不行啊...求解释

[解决办法]

如上图所示,重新设置编码后,需要重新建数据库。
[解决办法]
数据库既然能直接插入汉字,说明数据库编码是没有问题的,而是JSP传递过程中出现了乱码问题。这种情况,要加个filter进去。操作如下:
首先,增加一个filter类:

Java code
package com;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;public class EncodingFilter implements Filter {    private String encoding;    private FilterConfig filterConfig = null;    public void destroy() {        this.encoding = null;        this.filterConfig = null;    }    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        request.setCharacterEncoding(this.encoding);        chain.doFilter(request, response);    }    public void init(FilterConfig filterConfig) throws ServletException {        this.encoding = filterConfig.getInitParameter("encoding");    }} 

读书人网 >Java Web开发

热点推荐