1. 程式人生 > >Sybase編碼相關---中文亂碼

Sybase編碼相關---中文亂碼

     使用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即可