`

解决linux上ASE字符集转换问题

阅读更多

在Linux上安装SYBASE ASE 12.5/15.0数据库,为了跟客户的业务数据库保持一致,缺省字符集是iso_1,现在开发了一个B/S应用,运行在tomcat6.0上,默认使用utf8字符集,以前ASE和tomcat在Windows平台上时一切正常,网页和数据都能正常显示,当服务器全部移植到Linux (RHEL 5.3)上后,数据部分显示汉字就不正常了。连接数据的jdbc串一直是:

jdbc:sybase:Tds:192.168.1.5:5000/mydb?charset=cp936,如果把连接串改成jdbc:sybase:Tds:192.168.1.5:5000/mydb?charset=utf8,那么无论是Windows平台还是Lunix平台则都是乱码。

 

后来经研究发现,ASE数据库在将iso_1字符集转换为utf8字符集时,都是单字节转换的,换句话说他不认识汉字,在iso_1中的一个汉字到了utf8这里就变成了两个汉字了。如果将数据库的缺省字符集改成utf8,汉字部分增加50%的存储空间暂且不考虑,关键是要把所有数据重新bcp下是相当麻烦,若牵涉到客户的业务数据库,则风险更大。经过研究将缺省字符集由iso_1升级为gb18030则比较平顺,这里用了“升级”两字,简单的说gb18030是gbk/gb2312的升级版,当然更是iso_1的升级了。现在ASE数据库在将gb18030字符集转换为utf8字符集时能认得汉字了,既可以转换成utf8,也可以转换成cp936了。

 

只是在使用客户端工具时麻烦了些:

使用isql.exe和sqladv.exe连接的请增加参数:-Jgb18030,

使用PowerBuilder连接的请在Database Profile Setup -> Regional Settings -> Character Set: gb18030,

使用jdbc的请使用jdbc:sybase:Tds:192.168.1.5:5000/mydb?charset=utf8 或者 jdbc:sybase:Tds:192.168.1.5:5000/mydb?charset=cp936

 

那么如何将缺省字符集由iso_1升级为gb18030呢?

1、查看当前连接字符集:

select @@client_csname

go

 

2、安装字符集排序:

cd /sybase/charsets/gb18030

charset -Usa -Sserver_name binary.srt gb18030

 

3、查看gb18030字符集的id(返回的id一般是173,第4步要引用)

select name,id from master..syscharsets where name = 'gb18030'

go

 

4、改变服务器缺省字符集配置(173是上面第3步得到的)

sp_configure 'default character set id', 173

go

 

5、重启数据库,自动检查系统表的采用新字符集后的排序顺序,完了后自动关闭,需要再启数据库即可。

 

参考:http://www.chinaunix.net/jh/21/630973.html

 

分享到:
评论

相关推荐

    SYBASE各类数据库访问驱动(ado,odbc,oledb)

    Sybase数据库连接驱动 1)ADO.NET、ODBC驱动来自于Sybase ASE 16 发布时间...3)charsets、locales两个文件夹是为了解决字符集转换的问题,需注册SYBASE的环境变量才会起效,详情参见第3节说明 4) 分别有32和64位版本

    MySQL向Sybase ASE迁移指南

    Sybase ASE可在多种操作系统上运行,包括Windows、Linux和Unix,增强了部署灵活性。 ##### 3.11 备份与恢复 Sybase ASE提供了灵活的备份和恢复选项,支持完全备份、增量备份等多种方式。 ##### 3.12 基本调优 ...

    sybase12.51 for linux安装手册

    由于默认字符集问题可能导致中文显示不正常,可以通过设置环境变量`export LC_ALL=en_US`来切换到英文界面。 4. **开始安装**: - 选择“中华人民共和国 RPC”作为语言,同意许可协议,然后点击“下一步”。 - ...

    Sybase数据库安装及配置整理.pdf

    如果遇到字符集转换错误,如: ``` Msg 2401, Level 11, State 2: Server 'DB': Character set conversion is not available between client character set 'utf8' and server character set ``` 需要检查客户端和...

    CDC工具比较——IBM与Oracle

    - 支持字符集转换,能够在异构数据库之间平滑传输数据。 - 提供了丰富的管理工具,便于用户监控和控制复制过程。 #### 三、IBMCDC架构 **IBMCDC**则主要针对IBM环境下的数据捕捉需求,特别是IBM iSeries、S/390...

    IBM CDC 与ORACLE GOLDEN GATE比较

    - **异构数据库间字符集转换**:Oracle Golden Gate 内置了字符集转换功能,而IBM CDC 则需要借助外部工具来进行字符集转换。 - **浏览器操作**:Oracle Golden Gate 支持通过Web界面进行操作管理,而IBM CDC 不支持...

    DevArt UniDAC 6.2.8 (D6-XE10) FS.zip

    7. **Unicode支持**:UniDAC完全支持Unicode,确保在不同字符集间的数据迁移不会丢失信息。 8. **数据绑定**:与VCL和FireMonkey(FMX)框架无缝集成,支持数据感知控件的数据绑定。 9. **自定义SQL命令**:允许...

Global site tag (gtag.js) - Google Analytics