環境變數NLS LANG

2022-06-16 13:30:12 字數 2692 閱讀 1042

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

sql> select sysdate from dual;

sysdate -------------- 28-11月-14

當language設定為american時,提示資訊則變為英文:

c:\users\tianpan>set nls_lang=american_america.zhs16gbk

在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_langdb也有自己的nls_lang引數,來標識資料庫的語言,地域,字符集。可以通過以下的sql來查得, select * from v$nls_parameters;  or select userenv ('language') from dual;

客戶端的nls_lang和db的nls_langdb的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在存放資料時指定了他的語種所特有的一些表達形式,比如我們選擇...