关于MySlq中文乱码的问题相信刚刚开始学习的时候大家都遇到过,本人也是深受其害的,网上也有很多解决的办法但是说的都不怎么详细,今天就总结下几种MySql数据库中文乱码的解决方法 ,相信对新手来说会有一定的帮助。
我所使用的是MySql5.0版本的在安装完成的时候会提示进行数据库配置,配置好字符集就不用再重新修改mysql.ini文件了,这里一定要这么选择utf-8为数据库默认字符集,
其他的就不用多说了,如果在安装的时候没有配置也可以更改mysql.ini文件,具体更改方法:将里面的default-character-set=latin1 改为default-character-set=utf8,记住有两处可修改的地方,然后重起mysql服务即可将数据库默认字符集改为utf8.此时应该在mysql命令行用/s命令检查一下看是否改好了。
数据库的默认字符集配置好了,然后就是JSP页面的设置,页面编码统一设置为,
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
相信大家都喜欢用一些Mysql的可视化管理工具,这里要注意在创建数据库的时候字符集一定要统一,也就是都要使用utf-8,根据个人环境的不同有些这样设置可能不出现乱码了,如果还是出现的话那就请继续看,给自己的项目加上文件过滤器,详细代码请看:
package com.register;
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 SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null) {
// System.out.println(encoding);
request.setCharacterEncoding(encoding);
}
// System.out.println("Null");
}
chain.doFilter(request, response);
}
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"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
不要忘记在web.xml还要配置:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>
com.register.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
一切都配置好了现在试验下是不是乱码的问题已经解决了。