Ruby无法看到NLS_LANG环境变量

rob*_*trv 6 ruby bash oci8

我在CentOS上运行ruby脚本,并通过rvm(1.9.3)安装ruby.

我在.bash_profile中设置了NLS_LANG变量.

[app@box stasis]$ echo $NLS_LANG
en_US.UTF-8
[app@box stasis]$ which ruby
~/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
Run Code Online (Sandbox Code Playgroud)

但是当试图通过ruby(oci8驱动程序)访问它时,它无法找到它:

 1.9.3-p194 :001 > ENV['NLS_LANG']
 => nil 
Run Code Online (Sandbox Code Playgroud)

访问其他变量似乎工作:

 1.9.3-p194 :004 > ENV['USER']
 => "app"
Run Code Online (Sandbox Code Playgroud)

我的脚本显示以下内容: Warning: NLS_LANG is not set. fallback to US7ASCII.

我正在从ruby脚本运行sqlplus(执行一些.sql文件),并且特殊字符都搞砸了.

我怎样才能看到价值?

mpa*_*pis 11

您需要导出变量以在任何运行的应用程序中可用(除非它们是函数):

export NLS_LANG
Run Code Online (Sandbox Code Playgroud)

或与设置一起:

export NLS_LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

或者像大多数系统一样LANG:

export NLS_LANG=$LANG
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!结果我没有导出变量.'en_US.UTF-8'虽然不起作用(oci8说它无效).我使用了'NLS_LANG = AMERICAN_AMERICA.UTF8`并且oci8没有抱怨它. (10认同)
  • 所以这很古老,但请记住,在Oracle中,UTF8不是UTF8.您需要使用AL32UTF8.http://wonderingmisha.blogspot.jp/2011/10/utf8-vs-al32utf8.html (3认同)