BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别
汉语unicode编译方式,BIG5是繁体规范,GB是简体规范
GB是大陆使用的国标码,BIG5码,又叫大五码,是台湾使用的繁体码。
一. BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码
1.1. BIG5编码
BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个
1.2. GB编码
GB2312字集是简体字集, 全称为GB2312(80)字集, 共包括国标简体汉字6763个;
GB2312是中国规定的汉字编码, 也可以说是简体中文的字符集编码;
GBK包含全部中文字符;
GBK字集是简繁字集, 包括了GB字集, BIG5字集和一些符号, 共包括21003个字符;
GBK是GB2312的扩展, 除了兼容GB2312外, 它还能显示繁体中文, 还有日文的假名;
GBK标准, 他兼容GB2312标准, 同时在GB2312标准的基础上扩展了GB13000包含的字;
注意:
1. GBK字集是简繁字集, 包括了GB字集, BIG5字集和一些符号; 例如BIG5编码能够表示XX汉字, GBK编码也能够表示XX汉字, 但是XX汉字的BIG5编码与GBK编码是不同的.
2. GBK编码兼容GB2312编码, 例如GB2312编码能够表示YY汉字, 那么GBK编码也能够表示YY汉字, 而且YY汉字的GB2312编码与GBK编码是相同的.
3. 也就是说"包含"与"兼容"是两回事来的.
1.3. Unicode编码
Unicode也是一种字符编码方法, 由国际组织设计, 可以容纳全世界所有语言文字的编码方案. Unicode的学名是"UniversalMultiple-Octet Coded Character Set". 简称为UCS。UCS可以看作是"Unicode CharacterSet"的缩写
1.4. 说明
1. ASCII, GB2312, GBK到GB18030的编码方法是向下兼容的. 而Unicode只与ASCII兼容, 与GB码不兼容.
例如"汉"字的Unicode编码是6C49, 而GB码是BABA.
2. 一般来说, 如果在简体中文操作系统中使用的繁体字, 选GBK码繁体中文; 如果在繁体中文操作系统使用繁体字, 选Big5码繁体中文;
1.5. 个人理解
BIG5编码, GB编码, Unicode编码相当于一个并列关系, 就是说使用不同的编码方式表达相同的内容.
例如"汉"字的Unicode编码是6C49, 而GB码是BABA.
二. Unicode编码与UTF编码
Unicode编码只是规定如何编码, 例如"汉"字的Unicode编码是6C49, 那么如何把"汉"字保存到文件中, 你可以直接把6C49的数值保存, 你也可以吧6C49这4个字符来保存, 也就是说需要一种保存格式(一种格式协议). UTF-8, UTF-7, UTF-16就是被广泛接受的保存格式.
2.1 举例UTF-8编码
UTF-8编码分段范围:
编码范围 编码格式
A. 0000 - 007F 0XXXXXXX
B. 0080 - 07FF 110XXXXX 10XXXXXX
C. 0800 - FFFF 1110XXXX 10XXXXXX 10XXXXXX
例如“汉”字的Unicode编码是6C49, 6C49在编码范围范围C之内, 所以使用编码格式C(1110xxxx 10xxxxxx 10xxxxxx). 将6C49写成二进制是:0110 110001 001001, 依次代替模板中的X,得到:11100110 10110001 10001001, 即E6 B1 89. 所以"汉"字的Unicode编码是6C49, UTF-8的编码是E6B189.
现在把"汉"字的UTF-8的编码保存在文本中, 程序知道这是UTF-8编码, 提取E6B189中的信息得到6C49, 因为6C49必然是Unicode编码, 所以知道这个是"汉"字.(因为这是一个格式协议, 程序就是按照这个格式协议来解析这个文件的).
2.2 UTF的一些说明
UTF是“Unicode Transformation Format”的缩写(UTF-8与ISO-8859-1完全兼容);
UTF-8则包含全世界所有国家需要用到的字符(因为Unicode);
UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示, 比如, 如果是UTF8编码, 则无需下载IE的中文语言支持包(相当于编码格式), 也可以在外国人的英文IE上也能显示中文(文字的显示只需要字体文件即可);
UTF-8的中文所占用的字节比使用GBK所占用的字节(UTF-8占用3字节, GBK占用2字节), 在html中, W3提倡用charset = "gbk", 而不是用charset = "gb2312";
2.3. 个人理解
1. UTF编码是针对Unicode编码的(例如2.1所说的例子), 所以如果GB编码与UTF编码互转, 需要通过Unicode编码做中间人.
2. Unicode编码, GB编码等就是对文字的编码规则, UTF编码是对Unicode编码的存储(传输)规则(不是对文字的编码规则).
3. 例如:
UFT8编码E6B189是对Unicode编码的, 那么对应的Unicode编码是6C49, 这个Unicode编码6C49代表中文的"汉"字;
假设UFT8编码E6B189是对GBK编码的, 那么对应的GBK编码也是6C49, 但是这个GBK编码6C49肯定不是代表中文的"汉"字, 而是其他文字;
三. WideChar, MultiByte, Char
WideChar: 宽字符, 两个字节为一个字符, 比如Unicode码, 这是全球统一编码的, 每个字符占2个字节
MultiByte: 多字节码, 一个字节或两个字节为一个字符(DBCS就这样)
Char: ANSI的单字符
MultiByte 以及 Char 这两个应该是兼容的, 可以认为MultiByte是对ANSI的一种扩充, 有时它是一个字符占一个字节, 有时是占两个字节.
各编码之间的互换请看: http://blog.csdn.net/bagboy_taobao_com/article/details/8594466
BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别的更多相关文章
- 字符编码的故事:ASCII,GB2312,Unicode,UTF-8,UTF-16
http://blog.csdn.net/longintchar/article/details/51079340 ****************************************** ...
- AJPFX解析关于编码ansi、GB2312、unicode与utf-8的区别
大家平时遇到乱码问题是否有自己的一套解决方案?这篇文章就是介绍一下常用的编码方式关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本 ...
- ASCII、ANSI、GB2312、Unicode、UTF-8之间的关系
1.ASCII码: ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统.它主要用于 ...
- 编码GBK和GB2312、Unicode、UTF-8
一.编码GBK和GB2312 随着计算机发展,各国已经不满足于单纯用ASCII码: 对于我们来说能在计算机中显示中文字符是至关重要的,所以我们还需要一张关于中文和数字对应的关系表: 一个字节8位二进制 ...
- ASCII,GB2312,GBK,Unicode,Utf-8
1.ASCII:American Stardand Code for Information Interchange,是当时美国制定出来的一套编码系统,使用7位或8位二进制来表示西文字符,0-31以及 ...
- GB2312、Unicode编码等
抛出问题: 我在CPP文件中,打算输出一行阿拉伯字符:
- 了解ASCII、gb系列、Unicode、UTF-8的区别
转自:http://www.douban.com/note/334994123/?type=rec ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别? ● 我们在国内做网站是用UTF- ...
- Unicode、UTF-8、UTF-16和UTF-32的区别
Unicode是一个巨大的字符集,给世界上所有的字符定义了一个唯一编码.其仅仅规定了每个符号的二进制代码,没有制定细化的存储规则.UTF-8.UTF-16.UTF-32才是Unicode的存储格式定义 ...
- [转]字符编码笔记:ASCII,Unicode 和 UTF-8
本文非原创,转载 ,原文地址 :http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 作者: 阮一峰 日期: 20 ...
随机推荐
- spring-cloud-sleuth+zipkin追踪服务实现(二)
1. 简述 在上一节<spring-cloud-sleuth+zipkin追踪服务实现(一)>中,我们使用microservice-zipkin-server.microservice-z ...
- springcloud 显示服务详细健康信息
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- list列表常用方法
列表是Python中常用的功能,我们知道,列表可以用来存储很多信息,掌握列表的功能有助于我们处理更多的问题,下面来看看列表都具有那些属性: 1.append(self,p_object) de ...
- ubuntu 防火墙关闭的80端口,开启方法
#关闭防火墙 /etc/init.d/iptables stopservice iptables stop # 停止服务#查看防火墙信息/etc/init.d/iptables status #开放端 ...
- 牛客练习赛9 F - 珂朵莉的约数
题目描述 珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘积 求s的约数个数mod 1000000007 输入描述: 第一行两个正整数n,m第二行一个长 ...
- Python数据类型-列表(list)增删改查
1.添加元素 添加单个元素:使用append(object)函数可以为列表添加单个元素,参数object为对象:也就是说所有Python的对象都可以添加到列表中. 添加多个元素(合并列表):使用ext ...
- 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案
一.原因现象:图下图 二.原因导致: 经过Google发现很多人也出现同样的问题.从了解了X11GraphicEnvironment这个类的功能入手,一个Java服务器来处理图片的API基本上是需要运 ...
- RxSwift 系列(二)
前言 Subject是一个代理,它既是Observer,也是Observable.因为它是一个Observer,它可以订阅一个或多个Observable;因为它是一个Observable,它又可以被其 ...
- [NOI2007]货币兑换 --- DP + 斜率优化(CDQ分治)
[NOI2007]货币兑换 题目描述: 小 Y 最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A 纪念券(以下简称 A 券)和 B 纪念券(以下简称 B 券). 每个持有金券的顾客都有一个 ...
- bzoj 2754 ac自动机
第一道AC自动机题目. 记一下对AC自动机的理解吧: AC自动机=Trie+KMP.即在Trie上应用KMP思想,实现多Pattern的匹配问题. 复杂度是预处理O(segma len(P)),匹配是 ...