为了更好的支持软件的本地化,oracle自9i起推出了全球化解决方案,早先版本称之为national language support,即NLS,你可以注意到在oracle中有一些以此缩写开头的视图和参数,全球化解决方案更好的解决不同语言、地域的文化差异性的问题。
一、先明确oracle几个和本地化有关的概念:
1、LANGUAGE也就是语言,它约定了oracle用什么语言显示消息,排序的规则(二进制还是其他的),daynames,月份名称
2、TERRITORY也就是地域,它约定oracle用什么格式显示日期、货币、数字。
3、characterset也就是字符集,它约定了字符的编码方式,请注意客户端和服务器段都有字符集的设置,oracle会自动实现字符转换,当也可能转换失败,用某个替代字符代替如?或其他乱码来代替,这当然不是你期望的结果,字符集的设置非常重要,需要认真考虑。
二、再明确进行本地化设置的几个优先级
ORACLE通过以下5个层次实现本地化的相关设置
数据库级(create database 时指定参数值,创建后通常不建议改变)
实例级(根据init.ora的参数设置)
客户端设置级(通常根据nls_lang来设定)
会话级(通常用alter session命令来修改)
语句级(在编写的sql语句中使用函数进行参数设定)
以上5个层次,本地化设置的优先级依次升高,即实例的设置覆盖数据库的设置,以此类推。
三、字符集编码方案
由于历史原因,不同的字符有不同的编码如ascii,unicode,gb2312等等,为了实现与平台无关,oracle提供了各种字符集的实现,而不是像ms word一样依赖于操作系统提供的字符集,很多的文章都介绍过字符集的相关知识,再此不做赘述
四,究竟有哪些参数需要设定,可以参考下面的内容
NLS_LANGUAGE
NLS_TERRITORY
NLS_CURRENCY
NLS_ISO_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_CALENDAR
NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_SORT
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP
NLS_LENGTH_SEMANTICS
NLS_NCHAR_CONV_EXCP
还有chararcterset和nls_lang
五、以上参数可以指定哪些值
select * from v$nls_valid_values
看看输出结果
(待续)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12557315/viewspace-249089/
,如需转载,请注明出处,否则将追究法律责任。