oracle客戶端NLS_LANG的設定

us_yunleiwang發表於2013-12-13

NLS_LANG

常用環境配置:

1. 簡體中文windows cmd

set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK --sqlplus中文
set NLS_LANG=American_America.ZHS16GBK --英文

2. securecrt,Appearance-character encoding GB2312

export LANG=en_US.GB2312
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

3. securecrt,Appearance-character encoding UTF-8

export NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8' --中文
export NLS_LANG='American_America.AL32UTF8'   --英文
export LANG=en_US.UTF-8

總結一句話就是
LANG,NLS_LANG,客戶端OS 這3個字符集一致 

(GB2312 ZHS16GBK)
(UTF-8 AL32UTF8)
-----------------------------------------------------------------------------------------------------

3層結構--對於oracle,協調3個字符集
資料庫、資料庫客戶端程式、客戶端作業系統

資料庫字符集
select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';
select * from nls_database_parameters;
普遍常遇到情況是 AL32UTF8

資料庫客戶端程式
自己設定NLS_LANG環境變數
NLS_LANG=American_America.AL32UTF8,American表示語言;America表示地區;AL32UTF8字符集型別
oracle字符集表示:
AL32UTF8:AL,代表all,指使用所有語言;32,,32位;UTF8編碼
中文 export NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'
英文 export NLS_LANG='American_America.AL32UTF8'


客戶端作業系統

securecrt配置或cmd-簡體中文WINDOWS的字元編碼,或直接在資料庫伺服器上的terminal

Appearance-character encoding-可按需配置
C:\>chcp
活動內碼表: 936


[oracle@localhost ~]$ env | grep LANG
NLS_LANG=American_America.AL32UTF8
LANG=en_US.UTF-8

這裡有2個環境變數

NLS_LANG 是專為oracle客戶端程式使用的, 如sqlplus程式
LANG 是os 語言環境的設定,安裝了多個語言包的話就可以切換,注意優先順序是 LC_ALL > LC_* > LANG

因為這裡使用終端模擬軟體,securecrt,所以相當於多了一層互動

Appearance-character encoding-可按需隨意配置
一般配置個能支援中文的就可以
因為我這裡配置的是UTF-8

所以相當於3層結構中的 客戶端作業系統 就是UTF-8

需要NLS_LANG的encoding,和LANG的encoding,與軟體設定的encoding一致

如果沒有securecrt之類軟體,直接cmd命令列的話
簡體中文WINDOWS的字元編碼就是GBK,它的預設內碼表是936
C:\>chcp
活動內碼表: 936

所以把securecrt的encoding設為GB2312,就是和cmd的環境一樣
這時應
export LANG=en_US.GB2312
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1063246/,如需轉載,請註明出處,否則將追究法律責任。

相關文章