java访问MySQl时关于String的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 22:03:16
在MySQL中有表vip 其中字段 available定义为varchar(1) 字符集为gbk
在数据库中执行:
select id from vip where available = '是'
select id from vip where available = 'y'
第一步返回结果2个 第二步返回结果3个
在java中执行
第一个返回结果0个
第二个返回结果3个
这是为什么?

就是中文搞鬼, 你试试用servlet或者别的, 反正用web的方式来输出结果试一下, 估计能出"第一步返回结果2个 第二步返回结果3个"

再深究的话用java刚从mysql里去出来的值字符转换一下.

我估计是连接字符串出的问题。

把连接字符改为

jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=gbk&mysqlEncoding=gbk

如果已经是这样的了的话请无视我

可能是你的中文乱码了

这样是差不出来东西的,

你要在你的action 或者servlet中处理一下中文

String str = "是";

String newStr = new String(str.getBytes("ISO-8859-1"),"GBK");

然后吧newStr传过去试试看。

似乎跟我以前遇到的问题差不多:
select id from vip where available = '是'

你把上一句改成

select id from vip where available = binary '是'

试试

在程序中的请求传输过程中要进行字符集的转换,中文的乱码问题。你修改你的mysql的连接词jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=gbk&mysqlEncoding=gbk来设置你的数据库与你的web方面的字符集转换。如过还是不能解决就最好用英文的