nls_session_parameters中的NLS_CHARACTERSET返回None

问题描述 投票:0回答:2

我正在与Oracle一起使用的应用程序似乎存在字符问题,我在下面运行了查询以检查CHARACTERSET。

  • SELECT * FROM nls_session_parameters WHERE PARAMETER='NLS_CHARACTERSET';
  • SELECT * FROM nls_database_parameters WHERE PARAMETER='NLS_CHARACTERSET';

来自nls_database_parameters的第二个查询返回AL32UTF8

但是第一个查询似乎返回None

我已经读到nls_session_parameters优先于nls_database_parameters,但是在这种情况下,似乎没有设置任何值,它会退回到nls_database_parameters] ,或者是否需要配置某些内容来设置nls_session_parameters

谢谢您对此的任何投入。

oracle nscharacterset character-set nls-lang
2个回答
0
投票

NLS_CHARACTERSET数据库使用的字符集。您的会话(即客户端)不存储任何内容,因此NLS_CHARACTERSET不存在。

我假设您正在寻找NLS_LANG,它告诉数据库客户端使用哪个字符集。您无法从任何数据库视图/表中查询NLS_LANG,必须检查客户端中的设置。您只能在客户端设置NLS_LANG,而不能在数据库设置。

注意,某些客户端(例如,基于Java JDBC的客户端)不使用NLS_LANG设置,它们使用不同的全球化机制。


0
投票

来自Oracle Docs

NLS_SESSION_PARAMETERS显示用于查询视图的会话的NLS参数及其值。它不显示有关字符集的信息。

基本上NLS_SESSION_PARAMETERS将没有名为NLS_CHARACTERSET的参数。

字符集是语言环境的一部分,由NLS_LANG的值确定。

NLS_LANG在UNIX平台上设置为环境变量。在Windows平台上的注册表中设置了NLS_LANG。

因此检查NLS_LANG。同样,此信息在启动时由客户端应用程序拾取,并且无法从内部进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.