• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > [Oracle] 彻底搞懂Oracle字符集

[Oracle] 彻底搞懂Oracle字符集

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了oracle 客户端字符集,oracle 字符集,查看oracle字符集,查询oracle字符集,oracle修改字符集等相关知识,希望本文的分享对您有所帮助

基本概念
字符集(Character set):
是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。常见的字符集有ASCII,ZHS16GB231280,ZHS16GBK等。

字符编码(Character Encoding):
是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其它的一个集合(如电脑编码)进行配对。即在符号集合与数字系统之间建立对应关系。与字符集相对应,常见的字符编码有:ASCii,ZHS16GBK,ZHT16BIG5,ZHS32GB18030等。
字符集的定义其实就是字符的集合,而字符编码则是指怎么将这些字符变成字节用于保存、读取和传输。

万国码(Unicode):包含了几乎人类所有可用的字符,每年还在不断的增加,可以看作是一种通用的字符集。它将全世界所有的字符统一化,统一编码,不会再出现字符不兼容和字符转换的问题。
它有以下三种编码方式:
1.UTF-32编码:
固定使用4个字节来表示一个字符,存在空间利用效率的问题。
2.UTF-16编码:对相对常用的60000余个字符使用两个字节进行编码,其余的使用4字节。
3.UTF- 8编码:兼容ASCII编码;拉丁文、希腊文等使用两个字节;包括汉字在内的其它常用字符使用三个字节;剩下的极少使用的字符使用四个字节。

Oracle字符集基本原理
在搞懂Oracle字符集基本原理之前,一定要先分清以下三个概念:
1. Oracle数据库服务器字符集:即Oracle以哪种字符编码存储字符,可以通过以下语句查出数据库字符集的设置。

场景1:session 1插入,session 1查询,在数据库中存储错误,但显示正确。
插入过程:
”中国“两字在客户端操作系统字符集ZHS16GBK中的编码是”d6,d0,b9,fa",由于NLS_LANG和数据库字符集相同,数据库端对客户端传过来的字符编码不进行任何转换直接存入数据库,因此数据库中存储的编码也是“d6,d0,b9,fa”,
读取过程:
数据库端读取的编码是“d6,d0,b9,fa”,由于NLS_LANG和数据库字符集相同,客户端对数据库端传过来的字符编码不进行任何转换直接显示,编码”d6,d0,b9,fa“在客户端操作系统字符集ZHS16GBK对应的汉字为“中国”。

从以上分析可知,虽然读取时正确的,但那是因为负负得正,实际上数据库中存储是错误的,因此要特别小心这种情况,在生成库中要避免。其实只要对它进行length操作就能轻易揭开它的假面具:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • oracle查看字符集后修改oracle服务端和客户端字符集的步骤
  • [Oracle] 彻底搞懂Oracle字符集

相关文章

  • 2017-05-11Oracle 忘记密码的找回方法
  • 2017-05-11Oracle客户端版本及位数(Windows系统)查看方法
  • 2017-05-11Linux中Oracle启动侦听报错TNS:permission denied的解决方法
  • 2017-05-11oracle 9i使用闪回查询恢复数据库误删问题
  • 2017-05-11Oracle数据库下载及安装图文操作步骤
  • 2017-05-11Oracle数学相关函数小结
  • 2017-05-11window中oracle环境变量设置方法分享
  • 2017-05-11oracle查看字符集和修改字符集使用详解
  • 2017-05-11Oracle11g RAC开启关闭、设置归档小结
  • 2017-05-11oracle数据库tns配置方法详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法
    • Oracle索引(B*tree与Bitmap)的学习总结
    • Oracle call 和 exec的详解及区别
    • Redhat 6.2 下 oracle 11g R2的安装详解第1/2页
    • oracle中修改表名的几种方式
    • Oracle触发器trigger详解
    • Oracle表空间查看sql使用情况
    • Oracle查看和修改连接数(进程/会话/并发等等)
    • Oracle Index 的三个问题
    • Oracle三种循环(For、While、Loop)实现九九乘法表

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有