日期:2014-05-19  浏览次数:20685 次

java使用mysql时中文查询失败
小弟使用的是myeclipse开发工具开发JavaWeb项目,使用纯java驱动连接好了mysql数据库,数据库中有一张customer的表,保存着客户的用户名和密码,都是varchar类型的,问题的关键在于我使用用户名和密码查询结果时,中文的用户名就是返回不了结果,但是英文却可以,我查了下我的mysql编码格式,是utf8,我的网页编码格式也是utf8,最后我将我的java文件的文件编码格式都设置成了utf8了,可是中文还是查询不了,请哪位大虾帮忙啊

------解决方案--------------------
看你描述的情况,常规问题都排除了,只能详细分析下了。

用密码从数据库直接把用户名查回来,然后跟页面上传递过来的用户名,进行比对,看看究竟差异是什么。
------解决方案--------------------
你是用得GET传值吧??
需要在tomcat下的server.xml设置编码:
<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8443" URIEncoding="UTF-8"/>
传值的时候需要进行两次编码:
js编码:encodeURI(encodeURI("你传送的中文值"));
java编码:URLEncoder.encode(URLEncoder.encode("你传送的中文值",UTF-8),"UTF-8");
服务器端接受需要解码:
URLDecoder.decode("传送的中文值","UTF-8");