gpt4 book ai didi

linux - Oracle 设置默认 NLS_LANG

转载 作者:太空狗 更新时间:2023-10-29 11:10:36 27 4
gpt4 key购买 nike

我在 RHEL6 上运行 Oracle 数据库 11g。如果没有客户端 NLS_LANG 设置一些 utf8 字符的长度为 2。设置 NLS_LANG=AMERICAN_AMERICA.UTF8 后长度仅为 1。如何确定整个数据库的默认 NLG_LANG 已更改?我不想只为 session 更改此值,或者像 linux 中的环境变量一样。是否有可能将其设置为数据库通用?

SQL> select length('á') from dual;

LENGTH('??')
------------
2

# export NLS_LANG=AMERICAN_AMERICA.UTF8

SQL> select length('á') from dual;

LENGTH('á')
-----------
1

非常感谢任何想法

最佳答案

这是可能发生的情况:

  • 您的客户端字符集必须类似于 CP1252 或 ISO-8859-15,而实际上您的客户端确实使用 UTF8。
  • 在此字符集 (UTF8) 中,符号 á 占用两个字节,因此您的客户端发送这两个字节,同时告诉 Oracle 将它们视为 CP1252。在 CP1252 中,两个字符的两个字节代码导致 DB 将输入解释为两个字符,因此 length('à') 等于 2(如果插入此字符串,则插入结果为不等于 à)
  • 当您正确设置字符集时,输入会被 oracle 正确地视为单个字符,并且其长度为 1(仍然是两个字节)。

结论:正确设置你的客户端字符集,否则你会得到翻译错误(这样你不会得到非法字符,但你可能会得到奇怪的符号(¿)。

数据库字符集是在创建时设置的,通常通过导出/创建空白数据库/导入来更改。

关于linux - Oracle 设置默认 NLS_LANG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com