相克军_Oracle体系_随堂笔记013-字符集
2014-08-09 16:51
525 查看
linux环境下:
[root@single ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
……
windows环境下:
C:\Users\Martin>chcp
活动代码页: 936
字符集其实就是“字符”和“编码”的一张对照表,
数据库安装过程中,会选择确认下面两个字符集:
1.数据库字符集:数据库需要存储多国语言选择AL32UTF8,只有中英文选择ZHS16GBK
2.国家字符集 一般都选用AL16UTF16
unicode字符集:
UTF8 很老的,不用了。
AL32UTF8 目前最新的,建议用。
注:实际生产环境,如果确定数据库只是中国人用(只有中英文相关字符)的话,就采用ZHS16GBK..
sql*plus客户端(设置原则:与所在操作系统字符集一致):
windows:一般都是gbk,即chcp结果为936
set NLS_LANG=american_america.zhs16gbk
语言和地区为中文中国的话,set NLS_LANG=simplified chinese_china.zhs16gbk
linux:一般为utf-8,即echo $LANG 结果为en_US.UTF-8 或zh_CN.UTF-8
export NLS_LANG=american_america.utf8
测试:客户端Linux,系统字符集为zh_CN.UTF-8
正确设置:
export NLS_LANG=american_america.utf8
select dump('靖宇',1016) from dual;
insert into t2 values (1,'靖宇');
commit;
错误设置:
export NLS_LANG=american_america.zhs16gbk
select dump('靖宇',1016) from dual;
insert into t2 values (2,'靖宇');
commit;
注意:字符集设置错误导致库中存储的就是错误的编码,这个几乎是不可逆的`一定要慎重仔细设置好字符集。
服务器上oracle字符集
如何确定当前字符集设定,何时可以更改字符集。
了解超集,严格超集的概念,确定是否可以更改字符集。Oracle不建议后期更改数据库字符集!
服务器操作系统字符集(暂时忽略)
ps:
1.因为sql*plus 本身没有字符集,依赖于所在操作系统的字符集,而在远端linux上的oracle也是无法直接访问到windows上的字符集,所以依靠sql*plus的NLS_LANG设置来辨别。
2.因为oracle软件本身有字符集,当软件有自己的字符集时,就不用操作系统的字符集,所以服务器操作系统字符集的因素可以暂时忽略。
[root@single ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
……
windows环境下:
C:\Users\Martin>chcp
活动代码页: 936
字符集其实就是“字符”和“编码”的一张对照表,
数据库安装过程中,会选择确认下面两个字符集:
1.数据库字符集:数据库需要存储多国语言选择AL32UTF8,只有中英文选择ZHS16GBK
2.国家字符集 一般都选用AL16UTF16
unicode字符集:
UTF8 很老的,不用了。
AL32UTF8 目前最新的,建议用。
注:实际生产环境,如果确定数据库只是中国人用(只有中英文相关字符)的话,就采用ZHS16GBK..
sql*plus客户端(设置原则:与所在操作系统字符集一致):
windows:一般都是gbk,即chcp结果为936
set NLS_LANG=american_america.zhs16gbk
语言和地区为中文中国的话,set NLS_LANG=simplified chinese_china.zhs16gbk
linux:一般为utf-8,即echo $LANG 结果为en_US.UTF-8 或zh_CN.UTF-8
export NLS_LANG=american_america.utf8
测试:客户端Linux,系统字符集为zh_CN.UTF-8
正确设置:
export NLS_LANG=american_america.utf8
select dump('靖宇',1016) from dual;
insert into t2 values (1,'靖宇');
commit;
错误设置:
export NLS_LANG=american_america.zhs16gbk
select dump('靖宇',1016) from dual;
insert into t2 values (2,'靖宇');
commit;
注意:字符集设置错误导致库中存储的就是错误的编码,这个几乎是不可逆的`一定要慎重仔细设置好字符集。
服务器上oracle字符集
如何确定当前字符集设定,何时可以更改字符集。
select userenv('language') from dual;
select * from v$nls_parameters;
了解超集,严格超集的概念,确定是否可以更改字符集。Oracle不建议后期更改数据库字符集!
服务器操作系统字符集(暂时忽略)
ps:
1.因为sql*plus 本身没有字符集,依赖于所在操作系统的字符集,而在远端linux上的oracle也是无法直接访问到windows上的字符集,所以依靠sql*plus的NLS_LANG设置来辨别。
2.因为oracle软件本身有字符集,当软件有自己的字符集时,就不用操作系统的字符集,所以服务器操作系统字符集的因素可以暂时忽略。
相关文章推荐
- 相克军_Oracle体系_随堂笔记016-参数文件及数据库的启动和关闭
- 相克军_Oracle体系_随堂笔记009-检查点队列
- 相克军_Oracle体系_随堂笔记002-基础
- 相克军_Oracle体系_随堂笔记001-概述
- 相克军_Oracle体系_随堂笔记011-事物
- 相克军_Oracle体系_随堂笔记010-SCN
- 相克军_Oracle体系_随堂笔记015-网络原理及配置
- 相克军_Oracle体系_随堂笔记014-锁 latch,lock
- 相克军_Oracle体系_随堂笔记012-undo
- 相克军_Oracle体系_随堂笔记 PPT
- 相克军_Oracle体系_随堂笔记005-Database buffer cache
- 相克军_Oracle体系_随堂笔记008-存储结构
- 相克军_Oracle体系_随堂笔记005-Database buffer cache
- 相克军_Oracle体系_随堂笔记004-shared pool
- 相克军_Oracle体系_随堂笔记006-日志原理
- 相克军_Oracle体系_随堂笔记003-体系概述
- Oracle体系结构一(学习笔记)
- Oracle体系结构二(学习笔记)
- oracle笔记整理一[体系结构简介]
- Oracle物理体系_收获,不仅仅是Oracle_学习笔记