用mysql进行查询的时候,如果查询条件是中文的话就得不到结果例如表SchoolName Sheng
北京大学 北京
清华大学 北京
北京大学 bj
清华大学 bj执行查询
select * from 表名 where Sheng='北京'得不到查询结果。
如果改为
select * from 表名 where Sheng='bj'就能得到查询结果。这是什么问题啊? 上网查了下也有人遇到这种情况,可没有讲清楚如何解决?
有知道的吗? 给帮忙解决下。 谢了
北京大学 北京
清华大学 北京
北京大学 bj
清华大学 bj执行查询
select * from 表名 where Sheng='北京'得不到查询结果。
如果改为
select * from 表名 where Sheng='bj'就能得到查询结果。这是什么问题啊? 上网查了下也有人遇到这种情况,可没有讲清楚如何解决?
有知道的吗? 给帮忙解决下。 谢了
我打印sql语句不是乱码,正常的;
进行like '%%'也不行;
如果你没有修改数据库默认字符编码集,而你的项目中用的是其他的编码格式,我用的是utf-8,这里以utf-8编码格式为例。首先,在mysql安装目录下找到my.ini这个文件,修改其中的两处地方:
[client]port=3306[mysql]default-character-set=utf8
# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=utf8 如果你的查询条件是中文的话,以题为例,在执行查询前加上这句:ps.execute("set Names utf8"); 例如:
sql="SELECT * FROM schools WHERE Sheng=? ORDER BY SchoolID ASC";
ps=con.prepareStatement(sql);
ps.setString(1, sheng);
ps.execute("set Names utf8"); rs=ps.executeQuery();
做到这里,题中问题即可解决。刚才验证的时候发现往数据库中写入中文的时候也有乱码,解决方法首先修改上述提到的my.ini文件,然后再服务器端获取客户端数据前加上这句:request.setCharacterEncoding("utf-8");即可。
另外, 当需要把从数据库中获取的数据(中文数据)发送到客户端时,例如当你用ajax向前台反馈数据时,在发送数据前加上这句response.setContentType("text/html;charset=utf-8");即可。