在進行web開發和oracle安裝的過程當中常常有人對字符集搞不清楚,所以對此作一下總結。web
1.第一個問題:字符集之間的區別是什麼呢?數據庫
常見的字符集有:UTF-8和GBK瀏覽器
(1)GBK字符集服務器
(2)UTF-8字符集oracle
通常來講,國內的系統若是要保存漢字,通常會選擇使用GBK字符集,若是是想作網站等,全球可訪問的系統,那麼通常選擇UTF-8。網站
2.數據庫中哪些字符集須要設置?編碼
數據庫分客戶端字符集和數據庫服務器字符集。spa
而oracle的服務器字符集又有兩種:常規字符集(通常意義上的數據庫字符集)和國家字符集.net
1. 常規意義上的字符集(通常意義上的數據庫字符集):code
(1)用來存儲CHAR, VARCHAR2, CLOB, LONG等類型數據
(2)用來標示諸如表名、列名以及PL/SQL變量等
(3)用來存儲SQL和PL/SQL程序單元等
(4)通常爲:AL32UTF8 或者 ZHS16GBK
2. 國家字符集:
(1)用以存儲NCHAR, NVARCHAR2, NCLOB等類型數據
(2)國家字符集實質上是爲oracle選擇的附加字符集,主要做用是爲了加強oracle的字符處理能力,由於NCHAR數據類型能夠提供對亞洲使用定長多字節編碼的支持,而數據庫字符集則不能。國家字符集在oracle9i中進行了從新定義,只能在unicode編碼中的AF16UTF16和UTF8中選擇,默認值是AF16UTF16
3.字符集查看方法
數據庫字符集:select * from nls_database_parameters;
客戶端字符集:select * from nls_instance_parameters;
數據庫字符集的表示方式爲:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
若是客戶端字符集和數據庫字符集不一致時,經過plSql登錄時會提示以下錯誤:
4.客戶端字符集設置方法
32位客戶端: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\
64位客戶端:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home1
5.建議的字符集是什麼?
數據庫字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK(國內大部分數據庫仍是oracle多,若是作網站的話仍是建議使用UTF-8字符集)
國家字符集:SIMPLIFIED CHINESE_CHINA.AL16UTF16
客戶端字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
網頁字符集:UTF-8
通過實驗,不會出現亂碼。
參考文章: