如何确定Linux上Oracle Client的NLS_LANG设置?
我没有显式设置NLS_LANG。
对于将utf-8编码字符传送到数据库的应用程序,是否需要设置和导出变量NLS_LANG=AMERICAN_AMERICA.AL32UTF8?
Oracle客户端是否已经知道基于我的区域设置的编码?
me@ora11gR2> !echo $LANG
en_US.UTF-8
me@ora11gR2> !locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
me@ora11gR2> !echo $NLS_LANG
me@ora11gR2> @.[$NLS_LANG]
SP2-0310: unable to open file ".[$NLS_LANG]"
2条答案
按热度按时间cbjzeqam1#
这是一个老问题,所以我想分享一个在SQL*Plus中仍然有效的老答案。
这将输出如下内容:
它告诉您NLS_LANG环境变量设置为
ENGLISH_IRELAND.UTF8
或者,您可以运行以下查询:
其输出:
gfttwv5a2#
我想这里可能有些混乱。数据库中使用的字符集可以在V$NLS_PARAMETER中看到。为了客户端,即要正确显示从数据库查询的字符,客户端字符集必须与数据库字符集匹配,或者在运行SQLPlus之前,将NLS_LANG设置为终端程序的字符集。然后,SQLPlus将自动翻译/转换字符集,以便在终端中正确显示。
那么,终端程序使用了什么字符集呢?在运行SQL*Plus之前,请相应地设置NLS_LANG参数。
希望能帮上忙。