2012-05-11 8 views
5

Sto eseguendo uno script ruby ​​su CentOS e ho installato ruby ​​tramite rvm (1.9.3).Ruby non può vedere la variabile ambientale NLS_LANG

Ho impostato la variabile NLS_LANG in .bash_profile.

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

Tuttavia, quando si tenta di accedere tramite rubino (che il conducente oci8 fa), non può trovare:

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

Accesso altri Vars sembra funzionare:

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

mio script mostra quanto segue: Warning: NLS_LANG is not set. fallback to US7ASCII.

A cosa sto eseguendo sqlplus dallo script ruby ​​(per eseguire alcuni file .sql) e caratteri speciali sono tutti incasinati.

Come posso ottenere rubino per vedere il valore?

+0

Si visualizza 'NLS_LANG' quando si esegue' env' nella shell? –

+0

Non si è presentato. Stavo impostando la variabile in .bash_profile, ma non l'ho esportata. – robertrv

risposta

11

è necessario esportare le variabili di essere disponibili in tutte le applicazioni eseguite (a meno che non sono funzioni):

export NLS_LANG 

o insieme con l'impostazione:

export NLS_LANG=en_US.UTF-8 

o come sulla maggior parte dei sistemi LANG dovrebbe essere disponibile:

export NLS_LANG=$LANG 
+1

LANG contiene davvero il formato che Oracle si aspetta in NLS_LANG? –

+9

Grazie! Si scopre che non stavo esportando la variabile. 'en_US.UTF-8' non ha funzionato però (oci8 ha detto che non era valido). Ho usato 'NLS_LANG = AMERICAN_AMERICA.UTF8' e oci8 non ha lamentato a riguardo. – robertrv

+2

Quindi questo è antico, ma per favore ricorda che UTF8 non è UTF8 in Oracle. Devi usare AL32UTF8. http://wonderingmisha.blogspot.jp/2011/10/utf8-vs-al32utf8.html – polm23

Problemi correlati