nls_lang是乙個環境變數,用於定義語言,地域以及字符集屬性。對於非英語的字符集,nls_lang的設定就非常重要。
nls:『national language support (nls)』 當我們設定一種nls的時候實際上我們是為oracle在存放資料時指定了他的語種所特有的一些表達形式,
比如我們選擇chinese,那麼它的中文字元如何存放,按什麼規則排序,貨幣如何表示,日期格式也就被設定了。
nls_lang引數由以下部分組成:nls_lang=_.nls_language 指定: - oracle(錯誤)資訊的語言 - 日和月份的名稱 注意:nls_language與插入和查詢的*資料*的語言無關。
nls_territory 指定: - 貨幣和數字格式 - 計算星期和天數的範圍和慣例
客戶端字符集(clients characterset): - 定義oracle客戶端,客戶應用使用的編碼 * 或者它要符合您microsoft windows**頁 (gui工具的acp, 命令提示符的chcp 值) * 或者為unicode win32應用設定為utf8/al32utf8。
常見的值可以參見oracle database client globalization support
windows中設定nls_lang
1.命令提示符中設定為環境變數
如果您在命令列中設定nls_lang為環境變數,它將覆蓋登錄檔和系統屬性中的nls_lang的定義。在命令提示符中,使用「set」命令,例如:
language設定為中文時,提示如下:
c:\users\tianpan>set nls_lang=simplified chinese_china.zhs16gbk
c:\users\tianpan>sqlplus /nolog
sql*plus: release 11.2.0.1.0 production on 星期五 11月 28 10:07:21 2014
sql> conn scott/tiger 已連線。
sql> select sysdate from dual;
sysdate -------------- 28-11月-14
當language設定為american時,提示資訊則變為英文:
c:\users\tianpan>set nls_lang=american_america.zhs16gbk
c:\users\tianpan>sqlplus /nolog
sql*plus: release 11.2.0.1.0 production on fri nov 28 10:07:51 2014
sql> conn scott/tiger connected. sql> select sysdate from dual;
sysdate ------------ 28-nov-14
在windows下通過set nls_lang來設定,只是session級別的,關閉cmd視窗後再開啟,就又變為原來的設定了。如需永久生效,可以修改登錄檔的引數。
2.登錄檔設定(永久生效)
預設情況下,windows上的oracle安裝使用登錄檔來定義這個設定。 版本 10g 及以上: hkey_local_machine\software\oracle\key_這裡您會看到乙個條目名為nls_lang
在64位windows平台上安裝32位軟體,會使用32位相容性路徑 hkey_local_machine\software\wow6432node\oracle\key_3.作業系統環境變數
儘管登錄檔是microsoft windows設定的主要儲存位置,它不是唯一可以設定引數的地方。
雖然不推薦,但您可以設定nls_lang為系統屬性中的系統或者使用者變數。這個設定會被所有oracle home使用。
設定位置: '我的電腦' -> '屬性' > '高階' -> '環境變數'
因為這些環境變數比登錄檔中已經設定的引數級別高,所以除非您有非常好的理由否則不要在這個位置設定oracle引數。
linux/unix下的設定
export nls_lang=american_america.zhs16gbk
export nls_lang="simplified chinese_china".zhs16gbk
db中的nls_lang db也有自己的nls_lang引數,來標識資料庫的語言,地域,字符集。可以通過以下的sql來查得, select * from v$nls_parameters; or select userenv ('language') from dual;
客戶端的nls_lang和db的nls_lang db的nls_lang和客戶端環境變數中nls_lang盡可能的保持一致。setting the nls_lang environment variable for oracle databases 提供了如何保持一致的方法。
那麼為什麼要保持一致呢?那是因為如果字符集不匹配,有可能在db和client間相互轉換的過程中,出現字元轉換錯誤的情況。比如oracle nls_lang tips中舉的例子。
microsoft windows 環境中nls_lang的正確設定 (doc id 1577370.1)
在 unix 環境中正確設定 nls_lang (doc id 1548858.1)
nls_lang explained (how does client-server character conversion work?) (doc id 158577.1)
nls_lang faq
oracle database client globalization support setting the nls_lang environment variable for oracle databases
oracle nls_lang tips
環境變數NLS LANG
nls lang是乙個環境變數,用於定義語言,地域以及字符集屬性。對於非英語的字符集,nls lang的設定就非常重要。nls national language support nls 當我們設定一種nls的時候實際上我們是為oracle在存放資料時指定了他的語種所特有的一些表達形式,比如我們選擇...
Oracle環境變數NLS LANG
nls lang是乙個環境變數,用於定義語言,地域以及字符集屬性。對於非英語的字符集,nls lang的設定就非常重要。nls national language support nls 當我們設定一種nls的時候實際上我們是為oracle在存放資料時指定了他的語種所特有的一些表達形式,比如我們選擇...
Oracle環境變數NLS LANG
nls lang是乙個環境變數,用於定義語言,地域以及字符集屬性。對於非英語的字符集,nls lang的設定就非常重要。nls national language support nls 當我們設定一種nls的時候實際上我們是為oracle在存放資料時指定了他的語種所特有的一些表達形式,比如我們選擇...