对于初学者我们可以理解字符集就是一种字符编码方式,试想人可以直接语言进行交流,使用文字进行记录,而计算机却不认得我们人类创立的文字,计算机只认得0和1这样的二进制代码。当我们要通过计算机记录文字信息的时候,就需要有一种方式能够让计算机能够识得我们文字的输入,这就产生了编码。编码就是把我们日常使用的文字和计算机中的0和1对应起来,通过计算机的0和1的不同组合来对应到不同的文字。由于0和1的组合方式有很多加之有不同的人编码,所以就会产生很多不同的编码方式(你可以编码,别人也可以以进行编码嘛)。由权威机构进行编码而形成的编码集合称之为字符集,例如,中文的字符集GB2312就是由中国政府自己编出来的,台湾对此当然不服,所以他们也进行了汉字的编码,那就是大名鼎鼎的大五码(BIG5)。

字符集的根本就是编码的方法,大家各自的编码方法都不相同,这对电脑的普及和互联造成了非常大的困扰。这时美国老大站出来推出了一种双字节编码的标准叫做:ANSI!中国的GB2312就符合ANSI的标准。中国的ANSI是GB2312,日本的ANSI则是JIS;中文的ANSI编码只认中国字,日本的一样只认日本字。所以这种编码标准虽然统一了编码方法,但没有解决不同字符集的兼容问题。 这时就出现了Unicode编码,一个各种语言通吃的编码。当然这种编码如此强大也是付出了代价的,那就是长度!

Unicode编码也称为统一码、万国码、单一码,是一种在计算机上使用的字符编码。它使用16位的编码空间,也就是每个字符占用2个字节,这样理论上一共最多可以表示65,536(2的16次方)个字符,基本满足各种语言的使用。实际上目前版本的Unicode尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展使用,主要用于满足跨语言、跨平台进行文本转换、处理的要求,比如某软件平台的转换,从Windows到Liunx上。

演示一个插入插叙产生乱码的过程:

我们知道产生乱码的原因主要是需要显示文字的编码与客户端的编码不对应造成的,导致需要显示的字符在当前客户端中找不到对应的编码,只好以乱码显示。在Oracle中,当输入文字到Oracle,Oracle会认为当前文字的编码方式是按照客户端的NLS_LANG参数指定的编码方式编码的,那么Oracle会查询当前服务中的字符集,如果两方不一致时就会自动转换。当客户端NLS_LANG指定的字符集与操作系统不一致时,那么这种转换就会发生错误,具体是  操作系统-->客户端NLS_LANG-->服务器的字符集。

演示相同字符在不同字符集下对应的编码不同的例子

另开一个会话,设置客户端字符集为AL32UTF8,向表中插入相同字符:

我们分别在两个不同的会话中查询数据:

查看一下相同字符在操作系统中的字符编码:

将客户端设置为不同的字符集,演示导入/导出可能产生的乱码问题

~~~~~延伸:

GB2312是中国国家标准总局发布,于1981年5月实施。目前通行于中国大陆和新加坡。 GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。 2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。 现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。 现在很多软件编程都还是使用GB2312为主。因为兼容性好!不容易出现乱码。系统语言包里基本都是用GB2312的!

BIG5又叫大五码:是台湾计算机界实行的汉字编码字符集。它包含了 420 个图形符号和 13070 个汉字(不包含简化汉字)。 是在1984年由台湾财团法人资讯工业策进会和五家有意愿共同推动电脑中文化的资讯公司所共同创立,故称大五码。五家公司为:宏碁、神通、佳佳、零壹及大众。

Big5也是繁体的意思,GB是简体的意思。

Oracle数据库字符集试验的更多相关文章

  1. oracle数据库字符集的修改

    本文摘自:http://blog.csdn.net/nsj820/article/details/65711051.改客户端字符集:通过WINDOWS的运行菜单运行Regedit,修改注册表 Star ...

  2. 选择ORACLE数据库字符集

    如何选择数据库的字符集是一个有争议的话题,字符集本身涉及的范围很广,它与应用程序.客户的本地环境.操作系统.服务器等关系很密切,因此要做出合适的 选择,需要明白这些因素之间的关系.另外对字符集的基本概 ...

  3. linux下oracle数据库字符集修改

    linux下oracle数据库字符集修改 0.RHEL6.7.oracle11gr2 1.登录oracle.在安装oracle的用户下进入数据库. $ sqlplus / as sysdba 2.查询 ...

  4. Oracle数据库字符集问题解析

    Oracle数据库字符集问题解析 经常看到一些朋友问ORACLE字符集方面的问题,我想以迭代的方式来介绍一下.第一次迭代:掌握字符集方面的基本概念.有些朋友可能会认为这是多此一举,但实际上正是由于对相 ...

  5. ORACLE数据库字符集处理

    简介: ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处理和检索数据.利用全球化支持,OR ...

  6. Oracle数据库字符集问题

    Oracle数据库的字符集问题,也涉及作为服务器操作系统的CentOS或者Windows的字符集与Oracle字符集之间的关联关系Oracle的字符集,这个问题的提出是因为两个原因:一是遇到一个DMP ...

  7. oracle数据库字符集

    Oracle字符集的基本原理 1. Oracle服务器字符集 oracle以哪种字符编码存储字符,可以通过以下语句查出数据库字符集的设置. 方法1 SQL> select * from v$nl ...

  8. Oracle数据库字符集修改

    Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.一般来说,数据库字符集在安装数据库实例时就 ...

  9. Linux下修改Oracle数据库字符集命令

    常见情形:从服务器备份Oracle数据库后再到本地机器上还原Oracle数据库的时候经常会碰见数据库字符编码不一致的情况,可以用以下命令来修改本地的Oracle数据库字符编码,然后顺利还原Oracle ...

随机推荐

  1. 只用@property定义一个属性speed,子类不能直接用_speed,需要在interface的成员变量列表里写上_speed

    //写法一: @interface Person : NSObject { } @property (nonatomic, strong) NSString *name; @end @implemen ...

  2. PHP中的变量与常量详解

    几乎所有的编程语言都会涉及到变量和常量这两个概念,PHP也不例外.本节将介绍PHP语言中的变量和常量的应用方法. 一.什么是变量和常量 在程序执行的过程中,变量存储的值可以随时改变,而常量存储的值是不 ...

  3. PHP中常见的五种设计模式

    设计模式只是为 Java架构师准备的 — 至少您可能一直这样认为.实际上,设计模式对于每个人都非常有用.如果这些工具不是 “架构太空人” 的专利,那么它们又是什么?为什么说它们在 PHP 应用程序中非 ...

  4. phpstorm的使用教程

    1.设置行号:file->settings->Editor->Appearance->Show line numbers 2.设置字体和背景 :file->setting ...

  5. Python自动化之一对多

    一对多 建立一对多关系之后(也就是加了外键),会在字表里面多一个"外键字段_id"这个字段 查询 #_*_coding:utf-8_*_ from django.db import ...

  6. WIN7下VS2008生成Detours3.0

    Detours是微软开发的一个函数库,可用于捕获系统API.在用其进行程序开发之前,得做一些准备工作: 一.下载Detours       在http://research.microsoft.com ...

  7. CentOS7 开机调整亮度

    默认亮度是100,受不了,所与就自己想了个办法,依赖其它的自启动服务使我的设置生效. /usr/lib/systemd/scripts/nfs-utils_env.sh这是一个开机自启动服务要用到的脚 ...

  8. 20.SqlServer中if跟循环语句

    --if语句declare @i int begin print @i end else --循环语句 declare @i int begin insert into grade(classname ...

  9. javascript 核心语言笔记- 3 - 类型、值和变量

    JavaScript 中的数据类型分为两类:原始类型(primitive type)和对象类型(object type).原始类型包括数字.字符串和布尔值 JavaScript 中有两个特殊的原始值: ...

  10. iOS //清除本地缓存

    //清除本地缓存 -(void)clearCache{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT ...