程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> 客戶端字符集

客戶端字符集

編輯:SyBase教程

客戶端字符集


這部分是屬於oracle全球化支持的內容,詳細了解可以參考文檔
首先談一下數據庫字符集,我們用dbca建庫的時,會讓你選擇數據庫字符集,默認的就是基於操作系統的語言設置:
[oracle@localhost ~]$ echo $LANG;
zh_CN.UTF-8

SQL> select userenv('language') from dual
2 ;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
從oracle啟動的alert日志裡也可以看出數據庫字符集:
Database Characterset is AL32UTF8
從視圖 nls_database_parameters也可以看出
當然我們可以修改數據庫字符集(但有限制。不建議修改):
只有新的字符集是當前字符集的超集時才能修改數據庫字符集,例如UTF8是US7ASCII的超集,修改數據庫字符集可使用ALTER DATABASE CHARACTER SET UTF8

客戶端字符集環境
select * from nls_instance_parameters
其來源於v$parameter,表示客戶端的字符集的設置,可能是參數文件,環境變量或者是注冊表

會話字符集環境
select * from nls_session_parameters
來源於v$nls_parameters,表示會話自己的設置,可能是會話的環境變量或者是alter session完成,session會話裡設置的字符集只是在此session裡有效,session結束後,就失效了。如果會話沒有特殊的設置,將與nls_instance_parameters一致。

客戶端的字符集要求與服務器一致,才能正確顯示數據庫的非Ascii字符。如果多個設置存在的時候,NLS作用優先級別:字符設置函數 > alter session > 環境變量或注冊表 > 參數文件 > 數據庫默認參數
字符集要求一致,但是語言設置卻可以不同,語言設置建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。

下面著重講解客戶端字符集設置:
linux下:
[oracle@localhost ~]$ export LANG=zh_CN.UTF-8
Windows環境:
注冊表:
regedit =>HKEY_LOCAL_MACHINE =>SOFTWARE =>ORACLE-HOME
NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NLS_LANG可以分為三部分:
language:語言 SIMPLIFIED CHINESE
territory:地區 CHINA
character set :字符集 ZHS16GBK

NLS_LANG=<language>_<territory>.<client character set>
各個參數所帶來的影響:
Language: 顯示oracle消息,校驗,日期命名
Territory:指定默認日期、數字、貨幣等格式
Client character set:指定客戶端將使用的字符集
select * from v$nls_valid_values 這個視圖很有用,你可以查到oracle支持所有的上面的三個參數


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved