今天在写代码时,使用JDBC连接MySQL数据库,在servlet中写好sql语句后,启动tomcat在浏览器打开,输入查询条件发现没有查询到任何东西,看看控制台发现没有报错。那这个时候能想到的应该就是编码问题了。
我的request和response以及其他的东西都设置成了utf-8编码,包括数据库、表和字段。心累。后来发现原来JDBC的url中也得设置一下编码。遂改成如下格式
private static String url = "jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf-8";
之后就没有问题了。
原因:当你的查询条件中有中文的时候,在传输的过程中会进行转码,如果在url中没设置编码,那么连接到mysql查询时中文就会成为乱码。
我特地在表中增加了一行记录
然后把url改成如下形式
private static String url = "jdbc:mysql://127.0.0.1:3306/mybatis";
启动tomcat后打开网页,在网页中输入中文的查询条件,本该是有记录的,但没有任何输出,输入ceshi,则输出第七条记录。这说明上述原因是对的,中文的查询条件在传输到mysql时会进行转码。
别用baidu用google!
个人博客http://www.codeliu.com,欢迎志同道合的小伙伴!