博客开发笔记之数据库查询条件为中文

来源:互联网 发布:jtable修改数据 编辑:程序博客网 时间:2024/04/30 05:18

中文乱码问题之查询条件为中文

        最坑爹的问题莫过于中文编码的问题了,各种编码,jsp编码、数据库编码、myeclipse编码,让人蛋痛不已。

        其中遇到最烦的一件事是,当我的项目的查询语句的条件是中文时,得到的ResulSet对象是空的,也就是得不到结果集。然后我把sql语句打印出来,在命令行中运行,却能够得到想要的结果。而且,程序不报错,这着实让人很费解。

       一开始,首先想到的是代码的问题,于是测试代码,修改代码,跟踪代码,还是不行。实在不行,最终还是想到了伟大的网友们,从海量的信息中得到的结果是因为字符编码的问题。自己想想,也只能是这个问题,因为当查询条件为英文时,能正确得到结果集。

      因为是web项目,所以以为是JSP编码的问题,于是将所有的JSP页面设置为utf-8编码,然后将request和response设置为GBK编码。关闭n多次tomcat后,发现还是不行。

      此时在想是不是myeclipse的问题,于是将myeclipse也设成了GBK编码,运行后还是不行。到网上百度,得到的信息也仅仅能告诉我这是一个编码问题。

      于是建了一个java项目,结果一样让人心碎。不过至少知道了不是JSP编码的问题,问题也算有点进展。 

      最后只能怀疑是Mysql的编码问题,修改无数次的My.ini配置文章中的编码项也是无功而返,然后又在配置向导中设置编码也没用。最后到网上查mySql编码设置的相关信息,才发现mysql中,编码也包含很多部分,其中有就有以下编码:

character_set_client
character_set_connection
character_set_database
character_set_filesystem
character_set_results
character_set_server
character_set_system
character_sets_dir

执行set names 'GBK' 语句后,也只是部分项变成了GBK编码,于是我再运行配置向导将编码设成了GBK,结果得到下面的编码情况。

修改编码后,运行程序,果断得到了正确的结果,心里有点小高兴,但看看时间,因为这个问题弄了将近半天时间。

 

原创粉丝点击