2012-05-11 24 views
5

我在CentOS上運行ruby腳本,並通過rvm(1.9.3)安裝ruby。紅寶石看不到NLS_LANG環境變量

我在.bash_profile中設置了NLS_LANG變量。

[[email protected] stasis]$ echo $NLS_LANG 
en_US.UTF-8 
[[email protected] stasis]$ which ruby 
~/.rvm/rubies/ruby-1.9.3-p194/bin/ruby 

然而,當試圖通過紅寶石(其中OCI8驅動程序執行)來訪問它,它不能找到它:

1.9.3-p194 :001 > ENV['NLS_LANG'] 
=> nil 

訪問其他增值經銷商似乎工作:

1.9.3-p194 :004 > ENV['USER'] 
=> "app" 

我腳本顯示以下內容:Warning: NLS_LANG is not set. fallback to US7ASCII.

事情是我從ruby腳本運行sqlplus(執行一些.sql文件)和特殊字符都搞砸了。

我該如何獲得紅寶石來查看值?

+0

在shell中運行'env'時是否顯示'NLS_LANG'? –

+0

它沒有出現。我在.bash_profile中設置了變量,但沒有導出它。 – robertrv

回答

11

您需要導出變量(除非他們是函數)在運行任何應用程序可供選擇:

export NLS_LANG 

或連同設置:

export NLS_LANG=en_US.UTF-8 

或大多數系統LANG應可用:

export NLS_LANG=$LANG 
+1

LANG是否確實包含了Oracle在NLS_LANG中預期的格式? –

+9

謝謝!原來我沒有輸出變量。 'en_US.UTF-8'雖然沒有工作(oci8說它是無效的)。我使用了'NLS_LANG = AMERICAN_AMERICA.UTF8',而oci8並沒有對此抱怨。 – robertrv

+2

所以這是古老的,但請記住在Oracle中UTF8不是UTF8。你需要使用AL32UTF8。 http://wonderingmisha.blogspot.jp/2011/10/utf8-vs-al32utf8.html – polm23