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