关于java查询数据库字符集的问题

请教高手~小弟用Hibernate查询Sybase数据库时,查询条件是中文就会显示不出来,Sybase默认字符集是iso_1,,java的是unicode,在java中写... 请教高手~小弟用Hibernate查询Sybase数据库时,查询条件是中文就会显示不出来,Sybase默认字符集是iso_1,,java的是unicode,在java中写的sql语句中有中文条件就会返回乱码,请问如何修改sybase字符集 展开
 我来答
吉米琪9W
2010-10-26 · 超过17用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:33.6万
展开全部
1. JDBC连接串要有字符集设置
jdbc:sybase:Tds:192.168.3.11:5000/Wfis_db?charset=cp936

我项目中的写法:

Db.url=jdbc:sybase:Tds:angkor[服务器名或IP]:5000/angkor[数据库名]?charset=eucgb
2. 服务器配置成cp936
(3) 因为上面的列表中没有安装cp936,所以就安装cp936字符集
进入目录C:\sybase\charsets\cp936
运行命令 charset -Usa -Plongtop binary.srt cp936
运行完成后,系统就安装了cp936字符集

(4) 验证是否确实安装了cp936字符集
isql -Usa -Plongtop
>use master
>go
>select id,name from syscharsets
>go
id name
(5) 把系统的当前缺省字符集设置为cp936
>sp_configure "default char",171
>go
In changing the default sort order, you have also reconfigured SQL Server's
default character set.
Parameter Name Default Memory Used Config Value
Run Value Unit Type
------------------------------ ----------- ----------- ------------
----------- -------------------- ----------
default character set id 2 0 171
2 id static

(1 row affected)
Configuration option changed. Since the option is static, Adaptive Server must
be rebooted in order for the change to take effect.
Changing the value of 'default character set id' to '171' increases the amount
of memory ASE uses by 6 K.
(return status = 0)

(6) 重启Sybase服务,使更改生效
第一次重启,系统会对已经存在的数据进行转换,转换完成后自动停止服务,只要再次启动服务就可以了。

(7) 更改DB客户端的字符集
DBArtisan中要更改客户端的字符集为cp936才能连接cp936的服务器
通过菜单\Logfile\Options...打开对话框,选择Connection标签,
更改Client Character输入框的值为cp936。

数据库的charset修改为cp936时,使用isql按如下的方式
isql -Usa -Plongtop -Sdbserver -Jcp936
liuqing9382
2010-10-27 · TA获得超过174个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:111万
展开全部
1. 将原来的数据库删除,设备删除。

2. 清理注册表

(为了保证本次修改后的数据库服务器server name 和原来的一样,建议你在注册表里将原来的相关服务器server name 删除)

3. 重新build server

(如果你正确清理了注册表信息,可以使原来数据库服务器server name和新的一样),将本次数据库的缺省字符集设置为cp936,添加和配置缺省字符集方法是:(假如你的SYBASE是安装在d:\sybase)

先执行:

cd Sybase\ charsets\ cp936

d:\sybase\charsets\cp936>charset -Usa -Ppassword –Sserver_name binary.srt cp936

再执行:

d:\sybase\charsets\cp936>isql -Usa -P password -Sservername

1> select name,id from syscharsets

2> go

最后执行:sp_configure ‘default character set id’,171

成功后如下图:

重新启动服务器两次(第一次启动报错很正常,第二次正确启动,表明你的设置成功了)

然后进D:\sybase\locales 用写字板打开文件” locales.dat”

查找[NT]

修改最后一行,将iso_1改为cp936

在isql下运行sp_helpsort命令,验证字符集是不是cp936,如下图

然后再开始建设备,建数据库,初始化

参考资料: http://gongstring.javaeye.com/blog/432297

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangkuizai
2010-10-28
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
转换一下就行了,
比如:
while(kk1.previous())
{

try {
byte bb[] = kk1.getString("StuName").getBytes("iso-8859-1");
String s = new String(bb,"gbk");
System.out.println(s);
} catch (Exception ee)
{
}
}
kk1.getString("StuName")是从数据库读取出来的字符串,当读取的是中文是
就要转换一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式