1、mysql中的my.ini文件配置字符集
位置
[mysql]
default-character-set=gbk 或者 utf-8
[mysqld]
default-character-set=gbk 或者 utf-8
这时,新建数据库表的字段的字符集属性应与配置文件中的一致。
2、java连接字符串
instance = new BasicDataSource();
instance.setDriverClassName(
"com.mysql.jdbc.Driver");
instance.setUrl(
"jdbc:mysql://localhost/fweb?useUnicode=true&characterEncoding=GBK");
instance.setUsername("root");
instance.setPassword("root");
蓝字部分为重点
3、加过滤器
java文件:
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 CharSetFilter implements Filter
{
public void destroy() { }
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
{
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException
{
}
}
web.xml配置:
<filter>
<filter-name>SetCharEncoding</filter-name>
<filter-class>com.CharSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SetCharEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器是从网上找的资料,其中:request.setCharacterEncoding("utf-8"); 原始为“GBK”,结果还是乱码,后改为"gbk",还是乱码,后改为“utf-8”,才可正常向数据库提交中文。
如果以上做法还是乱码,则需将form表单的get改为post。