我正试图从ruby中攻击oracle,结果在第一行出现了一个错误。(我实际上是在《窥探》里这么做的,但这可能无关紧要。)

[1] pry(main)> require 'oci8'
RuntimeError: Invalid NLS_LANG format: AMERICAN

有什么问题,我该怎么解决?
Googling the error message没有发现任何有希望的东西。(现在出现了这个问题。)stackoverflow上唯一类似于这个问题的另一个问题是处理另一个问题(即使用户设置了一个变量,但该变量根本没有任何值)并且该问题的答案对我无效(建议的值也无效,并且$LANG未在我的环境中设置,因此将其设置为不起作用。)

最佳答案

NLS_LANG的格式应为<language>_<territory>.<characterset>
直接从the doc开始,有一个与您的确切用例对应的示例:
在所有基于unix的平台上,nls_lang环境变量被设置为shell的本地环境变量。例如,如果操作系统语言环境设置为en_us.utf-8,则相应的nls_lang环境变量应设置为american_america.al32utf8。
请注意AL32UTF8是接受所有Unicode字符的UTF8的超集(不带连字符)。UTF8仅支持Unicode 3.1及更早版本。我强烈建议使用AL32UTF8作为默认的“utf-8”字符集,除非您有非常特殊的需要。
在Oracle 12.1中,AL32UTF8最多支持6.1的Unicode。一个优点是AL32UTF8支持unicode 4.0引入的supplementary characters(代码点从u+10000到u+10ffff)

关于ruby - 修复RuntimeError:无效的NLS_LANG格式:AMERICAN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30269643/

10-09 20:41