急救:JSP连接mysql数据库乱码问题

fys249931556 2008-10-15 02:24:30
通过代码访问数据库,提取数据库中信息正常,但是当我的查询语句中含有中文时,无论查询任何数据,得到的结果都是空。
也就是说:
在SQLYOG中数据显示正常,同样的查询语句,在SQLYOG中可以查询到结果,但是通过JAVA代码查询到的结果是空(我确定查询语句的代码觉得没有问题,因为不查询中文内容可以使用)。
另外,在通过 运行-->CMD-->mysql -uroot -p123 进入mysql后,执行中文查询语句时需要设置
SET CHARACTER SET gbk ;
SET NAMES 'gbk' ;
才可以正常查询,否则会报错。

请问在jsp程序中如何设置才可以正常的查询数据库???
...全文
359 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
fys249931556 2008-10-17
  • 打赏
  • 举报
回复
算了。我看帖子还是结了吧。
我说了那么多,结果没人看完 。 - -#
  • 打赏
  • 举报
回复
JDBC 连接字符串后面加上这句话:

?useUnicode=true&characterEncoding=gbk

如果数据表的编码是 GBK 的话
niwen85 2008-10-16
  • 打赏
  • 举报
回复
那时候被数据库乱码折腾死,后来都搞定了。
fys249931556 2008-10-16
  • 打赏
  • 举报
回复
首先谢谢各位,昨天晚上死活上不去网,一直到今天才看到.

回复楼上各位:
msyql服务期中输入\s 得到如下结果:
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
回4楼 : 服务器上的mysql,是不允许我更改mysql.ini的.
回 3 5 6楼,可能你们不大明白我的意思.
回8楼,这个版本跟JDBC驱动关系不大.
回9楼,你往下看继续看.你说的方法可能行. o(∩_∩)o...

回竹子: 的确是你说的问题,就是查询的sql编码和数据库编码不一样. 我查询的是中文的,编码应该是utf8或者GBK,但是服务器编码是latin1.就是说我查询中文的sql语句,数据库是不识别中文编码的.我想要解决的就是这个问题,让mysql可以识别中文编码..
mysql数据库中已经有的中文(通过SQLYOG插入的),我在JSP中通过sql语句可以取出来,而且是正常的..

通过cmd 进入数据库后,我查询中文出错,错误原因就是数据库不能识别GBK的编码.当输入 set characterset set GBK ,set NAMES 'GBK' 这两句后,才可以正常查询. 然后输入\s 得到的结果就是
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8

通过jsp查询得到结果是空的原因,就是mysql原来不识别GBK的中文编码..也就是说,要通过set characterset set GBK ,set NAMES 'GBK' 后才可以正常查询.
9楼哥们可不可以把你的源码贴上,我看下..昨天我也想到通过JSP首先执行 query("set NAMES 'GBK'");但是结果还是不理想.

再次感谢各位,如果有没有看懂的地方,我随时跟帖说明.
youjianbo_han_87 2008-10-16
  • 打赏
  • 举报
回复
在你的数据库连接后面(通常是在 mysql_connect 后面,执行任何查询之前)加上一句 :

Code:

mysql_query("SET NAMES GBK");
tiyuzhongxin789 2008-10-16
  • 打赏
  • 举报
回复
把你的数据库的字符集设置生GBK的试试
jiaxy917 2008-10-16
  • 打赏
  • 举报
回复
更改数据库文件my.ini,把编码改成GBK
FJQZHW_ZHUANGWH 2008-10-16
  • 打赏
  • 举报
回复
一般是你查询的SQL的编码和数据库编码不同造成的。
fys249931556 2008-10-16
  • 打赏
  • 举报
回复
11L 可不可以给个方法?
12L 我用的数据库连接是proxool插件,配置的时候是在 .xml中配置的,不能加?useUnicode=true&characterEncoding=gbk
谢谢各位。郁闷的要死。
vkqiang 2008-10-15
  • 打赏
  • 举报
回复
mysql的jdbc驱动1.5版本以上对中文支持比较好,你换个版本高的驱动试试.
老紫竹 2008-10-15
  • 打赏
  • 举报
回复
一般原因是你查询的SQL的编码和数据库编码不同造成的。

还有,我没看到你说什么乱码问题啊?
Jarvis-Li 2008-10-15
  • 打赏
  • 举报
回复
你是数据库中就是乱码还是写到页面上是乱码?

都改成GBK
你到我发的博里面去看一下mysql的乱码问题吧
lili0610 2008-10-15
  • 打赏
  • 举报
回复
把页面和数据库的改成GBK2132
再输出你得到的值,是空还是乱码
Ant 2008-10-15
  • 打赏
  • 举报
回复
对Mysql而言,设置my.ini中找到有两处default-character-set的设定(Client和Server设置区)
在Client和Server模式的区域下都改成default-character-set=utf8就可以支持中英文了

但是对已经建立的数据库是无法生效的,改完重启Service必须重建数据库才行
BearRui 2008-10-15
  • 打赏
  • 举报
回复
把你的数据库的字符集设置生GBK的试试
fys249931556 2008-10-15
  • 打赏
  • 举报
回复
我不是大哥,我是小弟.
我连接数据库没有用Hibernate,中间件用的proxool连接池.

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧