首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

字符集与字符编码的区别与演进(ASCII、GBK、UNICODE)

演进:GB2312(2字节)→扩展繁体字→GBK(2字节)→扩展少数民族中日韩等→GB18030国家标准(4字节)。...注意GBK都是向下兼容的,即GB18030兼容GB2312,因为使用的编码位置没有重叠。 1.3.1 大五码 Big5码是一套双位元组字符集,使用了双八码储存方法,以两个字节来安放一个字。...具体来说,定义的是下列字节: 范围 第1字节 第2字节 编码数 字数 水准GBK/1 A1–A9 A1–FE 846 717 水准GBK/2 B0–F7 A1–FE 6,768 6,763 水准GBK/...3 81–A0 40–FE (7F除外) 6,080 6,080 水准GBK/4 AA–FE 40–A0 (7F除外) 8,160 8,160 水准GBK/5 A8–A9 40–A0 (7F除外) 192...2.3 GBK 事实上我们使用的GBK、GB18030都是标准,但由于我们的标准只对应一套特定的字符集,所以可以认为GBK就是字符集

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

警示:AL32UTF8字符集不是ZHS16GBK字符集的超集

今天有客户向我咨询:数据库由ZHS16GBK字符集修改为AL32UTF8字符集,发现中文的数据中小部分出现乱码,客户认为AL32UTF8明明可以支持更多的文字,不应该出现这样的情况才对。...不过,之前也一直有个误区,我们都知道AL32UTF8是可以支持多国语言的字符集,对于中文字节存储占用空间比ZHS16GBK多,然后第一反应就认为AL32UTF8应该是ZHS16GBK的超集。...这就说明我们要改的AL32UTF8字符集并不是ZHS16GBK的超集。...而客户端是Windows,chcp结果是936,也就是ZHS16GBK,这也进一步说明了ZHS16GBK和AL32UTF8字符集的不同。...同时实验还验证,如果数据库字符集本身是AL32UTF8,想修改成为ZHS16GBK字符集,也是一样的情况,需要加internal_use参数才可以转换,也就是说这种转换一样可能出现乱码,不过这个情况反倒好理解

1.7K60

GB2312、GBK、GB18030 这几种字符集的主要区别是什么?

1 GB2312-80 GB 2312 或 GB 2312-80 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称 GB 0,由中国国家标准总局发布,1981 年 5...对于人名、古汉语等方面出现的罕用字,GB 2312 不能处理,这导致了后来 GBK 及 GB 18030 汉字字符集的出现。...GBK 编码区分三部分: 汉字区 包括 GBK/2:OXBOA1-F7FE, 收录 GB 2312 汉字 6763 个,按原序排列; GBK/3:OX8140-AOFE,收录 CJK 汉字 6080...图形符号区 包括 GBK/1:OXA1A1-A9FE,除 GB 2312 的符号外,还增补了其它符号 GBK/5:OXA840-A9AO,扩除非汉字区。...3 GB18030 GB 18030,全称:国家标准 GB 18030-2005《信息技术中文编码字符集》,是中华人民共和国现时最新的内码字集,是 GB 18030-2000《信息技术信息交换用汉字编码字符集基本集的扩充

2.2K31

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

ZHS16GBK 2.国家字符集 一般都选用AL16UTF16 unicode字符集: UTF8 很老的,不用了。...注:实际生产环境,如果确定数据库只是中国人用(只有中英文相关字符)的话,就采用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...服务器操作系统字符集(暂时忽略) ps: 1.因为sql*plus 本身没有字符集,依赖于所在操作系统的字符集,而在远端linux上的oracle也是无法直接访问到windows上的字符集,所以依靠sql

63910

【Oracle字符集】识别及转换导出文件的字符集

,Solaris是Big-Endians,Linux是Little-Endians,所以Linux上的输出通过交换可以得到: 0303 5445 58504f52 …....to_char('852','xxxx') from dual; TO_CH ----- 354 对应前两张图 第2、3字节,就知道该导出文件字符集为ZHS16GBk。...最常见的转换发生在从US7ASCII到ZHS16GBK之间。 由于很多数据库最初以US7ASCII字符集存储中文,单纯通过导出导入是无法完成字符集转换的。...对于这种情况,可以通过设置导出字符集为US7ASCII,原样导出数据;导出后修改导出文件的第二、三字符,修改0001为0354,这样就可以将US7ASCII字符集的数据正确导入到ZHS16GBK的数据库中...如果导出文件使用的字符集是US7ASCII,目标数据库的字符集是ZHS16GBK,就可以使用create database的方法来修改,具体操作如下: ? ?

3.5K40

windows平台下编辑的内容传到linux平台出现中文乱码的解决办法

现象说明:在windows下编辑的内容,上传到linux平台下出现中文乱码。...文件,将字符集改为"UTF-8" 按Win键+run出现"运行",在里面输入"notepad"即可打开记事本。...主机传文件是经常的事,但有时文件名有中文,传到Linux机器会有乱码,选择起来也很麻烦,下面简单说下应对方法: 解决办法: 一般这种问题是文件的编码字符集、Shell编码字符集、XShell编码字符集不匹配...临时办法 1)简体中文的Windows一般使用GB字符集,这里将XShell设置为GBK 2) Linux主机 [root@AppServer1 ~]# export LANG=zh_CN.gbk 或者...永久生效 1) XShell属性设置 2) Linux环境变量设置 [root@AppServer1 ~]# vim /etc/profile export LANG=zh_CN.gbk /

2.2K80

UNICODE,GBK,UTF-8

UNICODE,GBK,UTF-8 UNICODE,GBK,UTF-8     简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的...按照程序员的称呼,GB2312、GBK都属于双字节字符集 (DBCS)。 2000年的GB18030是取代GBK1.0的正式国家标准。...在1991年前后,双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。...2.1、内码和code page 目前Windows的内核已经支持Unicode字符集,这样在内核上可以支持全世界所有的语言文字。...我再详细解释一下: “GB2312的原文”是指国家1980年的一个标准《中华人民共和国国家标准信息交换用汉字编码字符集 基本集 GB 2312-80》。这个标准用两个数来编码汉字和中文符号。

2.6K20

MySQL字符集详解

为例,生产中多数时linux,在linux里面除了latin1之外都是utf8的字符集):     mysql> show variables like "%char%";     +--------...(COLLATION),当然一个字符集也可能相应多个校对规则,可是两个不同的字符集不能相应同一个规则。...使用默认的就可以了   以下来看看上面命令列出的字符集相关变量的含义: character_set_client:server解析客户端sql语句的字符集....比如:linux系统的终端编码是UTF8,系统默认语言和编码为zh_CN.UTF8.我们有一个数据库名为test,test中有个表名为t1,编码为latin1,另外,我们在mysqlclient运行了SET...二、MySQL字符集编码层次   第一部分主要是归纳了MySQL文档中关于字符集编码的说明。这部分主要说明下MySQL中字符集编码层次:服务端-->数据库-->表-->字段。

3.3K10

Oracle 查看数据库字符集和客户端字符集 SQL 语句

Oracle 数据库分为数据库字符集和客户端字符集两种! 很多刚接触的朋友经常会搞混这两个字符集,数据库字符集是在创建数据库时进行指定的,不建议更改!而客户端字符集是可以随时更改的!...查询数据库字符集: select * from nls_database_parameters t where t.parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET...'); 查询客户端字符集: SELECT USERENV('language') FROM DUAL; 如何修改客户端字符集?...Windows: set NLS_LANG=american_america.AL32UTF8 set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK Linux:...export NLS_LANG=american_america.AL32UTF8 export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK 以上为常用客户端字符集

4.9K10

转载:python的编码处理(一)

为了保证输出不会在 linux 终端上显示乱码,需要设置好 linux 的环境变量:export LANG=en_US.UTF-8  如果你和我一样是使用 SecureCRT,请设置 Session Options...因为 Python 认为 16 位的 unicode 才是字符的唯一内码,而大家常用的字符集如 gb2312,gb18030/gbk,utf-8,以及 ascii 都是字符的二进制(字节)编码形式。...字符串 u.encode('gbk') # 正确,因为 '关关雎鸠' 可以用中文 gbk 字符集表示 # '\xb9\xd8\xb9\xd8\xf6\xc2\xf0...我一直说要设置正确的 linux $LANG 环境变量。那么,设置错误的 $LANG,比如 zh_CN.GBK 会怎样?(避免终端的影响,请把 SecureCRT 也设置成相同的字符集。) ...这也是为什么要设置 linux $LANG 环境变量与 SecureCRT 一致,否则这些字符会被 SecureCRT 再转换一次,才会交给桌面的 Windows 系统用编码 CP936 或者说 GBK

69120
领券