搭建Sybase測試資料庫伺服器時,遇到了亂碼問題,之前沒有遇到是因為開發資料庫伺服器是早就安裝好並設定好字元集的,因此些問題在部署測試環境時才出現,當時已經將資料庫配置完畢,並且所有的初始化指令碼都已經執行完畢,工程也已經成功部署在WebLogic上,開啟IE,運行程式,卻發現所有從資料庫中讀取出來的都是亂碼,經過上網搜尋的相關資料,需要設定字元集,但剛開始尋找到的資料基本是都是支言片語,沒有一個系統的講解如何設定字元集,幾乎將他們所有的方法都試過了,結果不但沒有弄好,甚至連控制台和SQL平台都是亂碼了,實在弄不明白了,就去問高人了,他給我發了一個專門講解字元集的文檔,講的很全面,而且通過他的幫忙終於將解決了亂碼問題。
下面我總結一下Sybase設定字元集的過程:
1、安裝完Sybase後,如果要想設定字元集為CP936,就必須先安裝該字元集,因為Sybase預設的字元集表中並沒有該字元集,安裝步驟如下:(這裡SYBASE的安裝路徑為c:\sybase)
1.c:\>;cd \sybase\charsets\cp936
2.c:\sybase\charsets\cp936>;
charset -Usa -Psa_pass -Sserver_name binary.srt cp936
通過上述命令就成功將CP936字元集安裝表Sybase的系統字元集表中,但必須重啟Sybase服務兩次才能看到結果,可以通過查看master資料庫中的syscharsets表查看是否已經安裝成功,我們可以看到已經安裝成功了:1002,171,0,1,'cp936','CP936 (Simplified Chinese).',’…’
2、看到CP936的編號為171,我們需要在Sybase的屬性中設定系統字元集為該ID,如所示:
如果設定完字元集成出現錯誤,是因為master資料庫的資料表空間預設只分配幾百K的空間,匯入新的資料後已經沒有足夠的空間了,所以要對master資料庫設定大一些的資料表空間,點擊master資料庫右鍵屬性,選擇資料表空間的tab頁,對原有的資料表空間編輯重新分配大小,將master所有的資料表空間都分配了就可以解決該問題。
3、 設定好字元集後就可以執行初始化指令碼了。 這其中還有幾個小插曲,由於第二步的資料表空間不足的錯誤根本沒有一個文檔中有說明,所以我和郭立英根本誰也不知道,都以為Sybase被我們搞崩潰了呢,沒辦法只能重新安裝,但安裝後還是有該問題,後來請高人來幫我們看才知道是資料表空間的問題,還有就是雖然設定好字元集後,開啟IE看還是亂碼,不知道為什麼,後來重新執行一遍指令碼後就沒有了,是因為之前預設的字元集為Cp850,所以用該字元集下執行的指令碼再到CP936的環境中讀取一定會亂碼,所以在CP936的環境中再執行一遍指令碼就沒有問題了。