標籤:style blog color strong 資料 art ar div
linux環境下:[[email protected] ~]# localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8"……windows環境下:C:\Users\Martin>chcp活動字碼頁: 936 字元集其實就是“字元”和“編碼”的一張對照表, 資料庫安裝過程中,會選擇確認下面兩個字元集:1.資料庫字元集:資料庫需要儲存多國語言選擇AL32UTF8,只有中英文選擇ZHS16GBK2.國家字元集 一般都選用AL16UTF16 unicode字元集:UTF8 很老的,不用了。AL32UTF8 目前最新的,建議用。註:實際生產環境,如果確定資料庫只是中國人用(只有中英文相關字元)的話,就採用ZHS16GBK.. sql*plus用戶端(設定原則:與所在作業系統字元集一致): windows:一般都是gbk,即chcp結果為936set NLS_LANG=american_america.zhs16gbk語言和地區為中文中國的話,set NLS_LANG=simplified chinese_china.zhs16gbklinux:一般為utf-8,即echo $LANG 結果為en_US.UTF-8 或zh_CN.UTF-8export NLS_LANG=american_america.utf8 測試:用戶端Linux,系統字元集為zh_CN.UTF-8正確設定:export NLS_LANG=american_america.utf8select dump(‘靖宇‘,1016) from dual;insert into t2 values (1,‘靖宇‘);commit;錯誤設定:export NLS_LANG=american_america.zhs16gbkselect dump(‘靖宇‘,1016) from dual;insert into t2 values (2,‘靖宇‘);commit;注意:字元集設定錯誤導致庫中儲存的就是錯誤的編碼,這個幾乎是無法復原的`一定要謹慎仔細設定好字元集。 伺服器上oracle字元集如何確定當前字元集設定,何時可以更改字元集。
select userenv(‘language‘) from dual;
select * from v$nls_parameters;
瞭解超集,嚴格超集的概念,確定是否可以更改字元集。Oracle不建議後期更改資料庫字元集!
伺服器作業系統字元集(暫時忽略)
ps:1.因為sql*plus 本身沒有字元集,依賴於所在作業系統的字元集,而在遠端linux上的oracle也是無法直接存取到windows上的字元集,所以依靠sql*plus的NLS_LANG設定來辨別。2.因為oracle軟體本身有字元集,當軟體有自己的字元集時,就不用作業系統的字元集,所以伺服器作業系統字元集的因素可以暫時忽略。