ITPub博客

首页 > Linux操作系统 > Linux操作系统 > NLS_LANG的设置和字符集问题

NLS_LANG的设置和字符集问题

原创 Linux操作系统 作者:Rodery 时间:2012-02-07 21:30:17 0 删除 编辑
字符集
字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包括关系,如US7ASCII就是ZHS16GBK的子集, 从US7ASCII到ZHS16GBK不会有数据解释上的问题,不会有数据丢失,Oracle对这种问题也要求从子集到超集的导出受支持,反之不行。在所有的字符集中UTF8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。

一旦数据库创建后,数据库的字符集是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集是十分重要的。数据库字符集应该是操作系统本地字符集的一个超集。存取数据库的客户使用的字符集将决定选择哪一个超集,即数据库字符集应该是所有客户字符集的超集。

NLS_LANG格式:
NLS_LANG = language_territory.charset
有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:
language 指定服务器消息的语言。
territory 指定服务器的日期和数字格式。
charset 指定字符集。

例如:
AMERICAN_AMERICA.US7SCII
AMERICAN_AMERICA.ZHS16GBK

还有一些子集可以更明确定义NLS_LANG参数:
DICT.BASE 数据字典基本 表版本
DBTIMEZONE 数据库时区
NLS_LANGUAGE 语言
NLS_TERRITORY 地域
NLS_CURRENCY 本地货币字符
NLS_ISO_CURRENCY ISO货币字符
NLS_NUMERIC_CHARACTERS 小数字符和组 分隔开
NLS_CHARACTERSET 字符集
NLS_CALENDAR 日历系统
NLS_DATE_FORMAT 缺省的日期格式
NLS_DATE_LANGUAGE 缺省的日期语言
NLS_SORT 字符排序序列
NLS_TIME_FORMAT 时间格式
NLS_TIMESTAMP_FORMAT 时间戳格式
……

查看可选的数据库字符集:
col nls_charset_id for 99999
col nls_charset_name for a35
col hex_id for a5
select nls_charset_id(value) nls_charset_id,value nls_charset_name,to_char(nls_charset_id     (value),'xxxx') hex_id
from v$nls_valid_values
where parameter = 'CHARACTERSET';

查看当前数据库字符集配置:
col parameter for a35
col value for a35
select * from v$nls_parameters;
或者:
select * from sys.props$;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26400036/viewspace-715785/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-11-18

  • 博文量
    3
  • 访问量
    40607