用Sybase Central连接ASE数据库乱码问题的解决
用sybase自带的客户端工具sybase central连接ase的时候,如果连接字符集设置不合适,查询结果中汉字会出现乱码。
如果ASE数据库的字符集为:iso_1或者cp850,执行:
sp_configure "disable character set conversi",1
go
修改此配置参数,需要重启ASE服务器。
然后,在sybase central连接配置窗口中,将Character set调整为:cp936。必须设置Character set这个参数,否则sybase central中显示的汉字肯定是乱码,这和sybase central使用的jdbc驱动有关。
其实,将Character set也可以调整为:eucgb,gb18030,这些都是支持中文的字符集。
另外,如果ASE服务器的字符集为:cp936或者utf8,可以不用修改参数disable character set conversi为:1。仅仅通过调整Character set为:cp936 也能解决汉字显示乱码的问题。
没法的啦。不信,老兄你在随便什么ase的db里面写一个词"钱珺",然后你就能发现随便你怎么设置这个character set,都只会是乱码啦。而实际上这个字无论在GB2312或GBK中都是存在的。
Sybase central本身自用的字库中文字太少,又不用系统字库,这样的问题没法避免,为此我宁可用PB或直接isql,这样引用本地字库反而更好地支持查询。
补充一下:博客中使用的sybase central是ASE15.0.3自带的。但是,我发现ASE15.5自带的sybase central客户端,在连接UTF8字符集的时候即使不指定连接字符集为cp936(eucgb,GBK)等也是能够正常显示汉字的。
另外,你说的钱珺”两个字,我在utf8-nocase环境下测试是能正确显示的。
请问, 你说的是在哪些character set 下无法显示?