mysql+jive的中文问题,内附我遇到问题的详细情况,请大家一起来交流

02-09-21 jyogou

现在的状态
jsp: 内码设为gb2312
javabean:不设置内码转换,也就是接受到的是unicode
jdbc,mysql:默认的连接,无任何特殊设置,mysql也是默认的安装
现在的情况:
jsp传到bean里为unicode,这时候通过jdbc写入mysql数据库会自动转成gb2312(不知道这是jdbc的功能还是mysql的功能?)
再通过jdbc读出来以后还是原来的gb2312,这时候javabean里存储的是gb2312,问题就出在这里,第一次从jsp过来变量里存储的是unicode,而同样从mysql里读出来存放到变量里是gb2312,这样同样在通过savetodb方法写入数据库,就会出现不同的结果,gb2312写到数据库里会变成乱码。
如果全部转成unicode,那么如何让通过jdbc读写数据库的字符都为unicode,这样的话手工更改数据库里的unicode数据会不会很麻烦
这个问题如何解决,请高手指教,大家一起来探讨

msn: xugangxugang1@hotmail.com
qq: 1628650

cc
2002-09-23 13:53

我得感觉是:为了保证正确性,一定要无论编码运行在哪里,都要保证编码不是乱码的。这样可能会多转几次码,但是一定会保证正确。

转码代码的机制变成用XML控制的。

qdyoung
2002-09-25 14:41

全部用iso8859_1编码,mysql数据库在url设置一下编码,这样都不会有问题。sqlserver数据库jdbc默认的是iso编码,不这样做会非常麻烦

对于mysql,这样做也可以,就不需要每个地方去转换了:
1. 不用设置db url的编码(win下),或设置为GBK(dburl的unicode参数见其它帖子说明)
2. 所有jsp开头用 GBK page encoding,并且设置
request.setCharacterEncoding("GBK");
(因为request和response默认的是iso编码,不设置的话显示或者写入数据库都有问题)

当时这样,对sqlserver好像就不行了,sqlserver不知道怎么设置默认编码

其它数据库没有测试过,估计都是默认的iso编码

jyogou
2002-09-25 23:29

不知道编码问题什么时候才会有一个完美的解决方案

feiyang
2002-10-10 14:37

我在配置jive时也遇到同样的问题,但采用filter技术可以解决这个问题