首页 » ORACLE » nls_lang、nls_language、nls_characterset的区别

nls_lang、nls_language、nls_characterset的区别

oracle 数据库对字符的处理及表现形式分为三个层面,优先级先后分别是数据库初始化参数字符集、os操作系统环境变量级、session级

先说什么是字符集?字符集就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。

格式为<语言><比特位数><编码 >比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集

数据库初始化参数字符集,在建数据库前指定的字符集,建立后通常不能修改,如果修改可以用命令alter database set character set  xxx; 不过这样修改有一定的危险,有可能会出现乱码超成数据的丢失,而且修改后的字符集一定是修改前的超集。如果未指定建库时会依赖os的设置。session级作用域只是影响那个连接

nls_characterset设置服务器的字符集

nls_lang客户端字符集定义了客户端字符数据的编码方式,任何发自或发往客户端的字符数据均使用客户端定义的字符集编码,客户端可以看作是能与数据库直接连接的各种应用

NLS_NCHAR_CHARACTERS  全球化的字符集默认为 AL16UTF16

nls_language是数据库内的默认语言 ,可能不易理解,下面是官方解释

NLS_LANGUAGE specifies the default language of the database. This language is used for messages, day and month names, symbols for AD, BC, a.m., and p.m., and the default sorting mechanism. This parameter also determines the default values of the parameters NLS_DATE_LANGUAGE and NLS_SORT.

查询相关的几个表

nls_database_parameters;

nls_session_parameters;

打赏

对不起,这篇文章暂时关闭评论。