前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >相克军_Oracle体系_随堂笔记013-字符集

相克军_Oracle体系_随堂笔记013-字符集

作者头像
Alfred Zhao
发布2019-05-24 20:26:25
6410
发布2019-05-24 20:26:25
举报

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字符集

如何确定当前字符集设定,何时可以更改字符集。

代码语言:javascript
复制
select userenv('language') from dual;
代码语言:javascript
复制
select * from v$nls_parameters;

了解超集,严格超集的概念,确定是否可以更改字符集。Oracle不建议后期更改数据库字符集!

服务器操作系统字符集(暂时忽略)

ps:

1.因为sql*plus 本身没有字符集,依赖于所在操作系统的字符集,而在远端linux上的oracle也是无法直接访问到windows上的字符集,所以依靠sql*plus的NLS_LANG设置来辨别。

2.因为oracle软件本身有字符集,当软件有自己的字符集时,就不用操作系统的字符集,所以服务器操作系统字符集的因素可以暂时忽略。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-08-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档