关于java查询数据库字符集的问题
请教高手~小弟用Hibernate查询Sybase数据库时,查询条件是中文就会显示不出来,Sybase默认字符集是iso_1,,java的是unicode,在java中写...
请教高手~小弟用Hibernate查询Sybase数据库时,查询条件是中文就会显示不出来,Sybase默认字符集是iso_1,,java的是unicode,在java中写的sql语句中有中文条件就会返回乱码,请问如何修改sybase字符集
展开
3个回答
展开全部
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
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
展开全部
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,如下图
然后再开始建设备,建数据库,初始化
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
转换一下就行了,
比如:
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")是从数据库读取出来的字符串,当读取的是中文是
就要转换一下。
比如:
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")是从数据库读取出来的字符串,当读取的是中文是
就要转换一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询