Sybase编码相关---中文乱码

来源:互联网 发布:淘宝没有指纹支付选项 编辑:程序博客网 时间:2024/06/08 09:57

           

     使用Sybase Central打开sybase库中的内容,如果显示乱码,可以使用如下的方法解决。
     注意:服务器安装后,要先设置字符集,然后再添加数据,如果已有数据,修改字符集,会将原来的中文内容变成乱码!
     
     1. JDBC连接串要有字符集设置
     jdbc:sybase:Tds:IP地址:5000/myDB?charset=cp936
     
     2. 服务器配置成cp936
     (1) 使用isql查看当前已经安装的字符集
     isql -Usa -P
     >use master
     >go
     >select id,name from syscharsets
     >go
     id name
     --- ----------------
      0 ascii_8
      1 iso_1
      2 cp850
     20 defaultml
     21 thaidict
     22 iso14651
     24 utf8bin
     25 binary
     39 altnoacc
     45 altdict
     46 altnocsp
     47 scandict
     48 scannocp
     50 bin_iso_1
     50 bin_cp850
     51 dict
     52 nocase
     53 nocasep
     54 noaccent
     55 espdict
     56 espnocs
     57 espnoac
     59 rusnocs
     64 cyrnocs
     65 elldict
     69 hundict
     70 hunnoac
     71 hunnocs
     73 turknoac
     74 turknocs
     129 cp932bin
     130 dynix
     137 gb2312bn
     140 cyrdict
     155 turdict
     161 euckscbn
     163 gbpinyin
     165 rusdict
     179 sjisbin
     192 eucjisbn
     194 big5bin
     
     (41 rows affected)
     从列表中看出没有安装cp936字符集
     
     (2) 查看当前使用的缺省字符集
     >sp_configure "default char"
     >go
     Parameter Name Default Memory Used Config Value Run Value Unit Type
     ------------------------------ ----------- ----------- ------------ ----------- -------------------- ----------
     default character set id 2 0 2 2 id static
     
     缺省字符集的id是2,查看上面的列表,可以得知是cp850
     
     (3) 因为上面的列表中没有安装cp936,所以就安装cp936字符集
     进入目录C:\sybase\charsets\cp936
     运行命令 charset -Usa -P binary.srt cp936
     运行完成后,系统就安装了cp936字符集
     
     (4) 验证是否确实安装了cp936字符集
     isql -Usa -Plongtop
     >use master
     >go
     >select id,name from syscharsets
     >go
     id name
     --- ------------------------------
      0 ascii_8
      1 iso_1
      2 cp850
     20 defaultml
     21 thaidict
     22 iso14651
     24 utf8bin
     25 binary
     39 altnoacc
     45 altdict
     46 altnocsp
     47 scandict
     48 scannocp
     50 bin_iso_1
     50 bin_cp850
     50 bin_cp936
     51 dict
     52 nocase
     53 nocasep
     54 noaccent
     55 espdict
     56 espnocs
     57 espnoac
     59 rusnocs
     64 cyrnocs
     65 elldict
     69 hundict
     70 hunnoac
     71 hunnocs
     73 turknoac
     74 turknocs
     129 cp932bin
     130 dynix
     137 gb2312bn
     140 cyrdict
     155 turdict
     161 euckscbn
     163 gbpinyin
     165 rusdict
     171 cp936
     179 sjisbin
     192 eucjisbn
     194 big5bin
     
     (43 rows affected)
     从列表中可以发现已经安装了cp936,id是171
     
     (5) 把系统的当前缺省字符集设置为cp936
     >sp_configure "default character set id",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) 客户端按如下内容修改:
     1、找到%Sybase%\locales\locales.dat文件,并编辑该文件
     
     2、找到[NT]这一节
     
     3、将locale = default, us_english, iso_1修改为locale = default, us_english, cp936即可

0 0
原创粉丝点击