【问题标题】:NLS_CHARACTERSET in nls_session_parameters returns Nonenls_session_parameters 中的 NLS_CHARACTERSET 返回 None
【发布时间】:2020-05-01 22:15:18
【问题描述】:

我与 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


    【解决方案1】:

    来自Oracle Docs

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

    基本上NLS_SESSION_PARAMETERS 不会有名为NLS_CHARACTERSET 的参数。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-04
        • 1970-01-01
        • 2022-11-21
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        • 2022-08-18
        相关资源
        最近更新 更多