我在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.
谢谢你对此的任何投入。
发布于 2020-01-15 07:16:14
NLS_SESSION_PARAMETERS显示正在查询视图的会话的NLS参数及其值。它不显示有关字符集的信息。
基本上,NLS_SESSION_PARAMETERS将不会有名为NLS_CHARACTERSET的参数。
字符集是区域设置的一部分,区域设置由NLS_LANG的值决定。
NLS_LANG被设置为UNIX平台上的环境变量。NLS_LANG是在Windows平台上的注册表中设置的。
因此,请检查NLS_LANG。此外,客户端应用程序在启动时会获取此信息,并且不能从内部更改。
发布于 2020-01-15 07:11:22
NLS_CHARACTERSET是数据库使用的字符集。您的会话(即客户端)不存储任何内容,因此不存在NLS_CHARACTERSET。
我假设您正在寻找NLS_LANG,它告诉数据库客户端使用哪个字符集。不能从任何数据库视图/表查询NLS_LANG,必须检查客户端中的设置。您只能在客户端设置NLS_LANG,而不能在数据库端设置。
注意,一些客户机(例如,基于Java的客户端)不使用NLS_LANG设置,它们使用的是不同的全球化机制。
https://stackoverflow.com/questions/59746453
复制相似问题