汉语unicode编译方式,BIG5是繁体规范,GB是简体规范

GB是大陆使用的国标码,BIG5码,又叫大五码,是台湾使用的繁体码。

BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char 说明与区别

2014年12月31日 13:55:02 阅读数:4806 标签: BIG5GB2312GBKUnicodeUTF8 更多

个人分类: C/C++
 
 

一. 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说明与区别的更多相关文章

  1. 字符编码的故事:ASCII,GB2312,Unicode,UTF-8,UTF-16

    http://blog.csdn.net/longintchar/article/details/51079340 ****************************************** ...

  2. AJPFX解析关于编码ansi、GB2312、unicode与utf-8的区别

    大家平时遇到乱码问题是否有自己的一套解决方案?这篇文章就是介绍一下常用的编码方式关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本 ...

  3. ASCII、ANSI、GB2312、Unicode、UTF-8之间的关系

    1.ASCII码: ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统.它主要用于 ...

  4. 编码GBK和GB2312、Unicode、UTF-8

    一.编码GBK和GB2312 随着计算机发展,各国已经不满足于单纯用ASCII码: 对于我们来说能在计算机中显示中文字符是至关重要的,所以我们还需要一张关于中文和数字对应的关系表: 一个字节8位二进制 ...

  5. ASCII,GB2312,GBK,Unicode,Utf-8

    1.ASCII:American Stardand Code for Information Interchange,是当时美国制定出来的一套编码系统,使用7位或8位二进制来表示西文字符,0-31以及 ...

  6. GB2312、Unicode编码等

    抛出问题: 我在CPP文件中,打算输出一行阿拉伯字符:

  7. 了解ASCII、gb系列、Unicode、UTF-8的区别

    转自:http://www.douban.com/note/334994123/?type=rec ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别? ● 我们在国内做网站是用UTF- ...

  8. Unicode、UTF-8、UTF-16和UTF-32的区别

    Unicode是一个巨大的字符集,给世界上所有的字符定义了一个唯一编码.其仅仅规定了每个符号的二进制代码,没有制定细化的存储规则.UTF-8.UTF-16.UTF-32才是Unicode的存储格式定义 ...

  9. [转]字符编码笔记:ASCII,Unicode 和 UTF-8

      本文非原创,转载 ,原文地址 :http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 作者: 阮一峰 日期: 20 ...

随机推荐

  1. spring-cloud-sleuth+zipkin追踪服务实现(二)

    1. 简述 在上一节<spring-cloud-sleuth+zipkin追踪服务实现(一)>中,我们使用microservice-zipkin-server.microservice-z ...

  2. springcloud 显示服务详细健康信息

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  3. list列表常用方法

    列表是Python中常用的功能,我们知道,列表可以用来存储很多信息,掌握列表的功能有助于我们处理更多的问题,下面来看看列表都具有那些属性:     1.append(self,p_object) de ...

  4. ubuntu 防火墙关闭的80端口,开启方法

    #关闭防火墙 /etc/init.d/iptables stopservice iptables stop # 停止服务#查看防火墙信息/etc/init.d/iptables status #开放端 ...

  5. 牛客练习赛9 F - 珂朵莉的约数

    题目描述 珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘积 求s的约数个数mod 1000000007 输入描述: 第一行两个正整数n,m第二行一个长 ...

  6. Python数据类型-列表(list)增删改查

    1.添加元素 添加单个元素:使用append(object)函数可以为列表添加单个元素,参数object为对象:也就是说所有Python的对象都可以添加到列表中. 添加多个元素(合并列表):使用ext ...

  7. 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案

    一.原因现象:图下图 二.原因导致: 经过Google发现很多人也出现同样的问题.从了解了X11GraphicEnvironment这个类的功能入手,一个Java服务器来处理图片的API基本上是需要运 ...

  8. RxSwift 系列(二)

    前言 Subject是一个代理,它既是Observer,也是Observable.因为它是一个Observer,它可以订阅一个或多个Observable;因为它是一个Observable,它又可以被其 ...

  9. [NOI2007]货币兑换 --- DP + 斜率优化(CDQ分治)

    [NOI2007]货币兑换 题目描述: 小 Y 最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A 纪念券(以下简称 A 券)和 B 纪念券(以下简称 B 券). 每个持有金券的顾客都有一个 ...

  10. bzoj 2754 ac自动机

    第一道AC自动机题目. 记一下对AC自动机的理解吧: AC自动机=Trie+KMP.即在Trie上应用KMP思想,实现多Pattern的匹配问题. 复杂度是预处理O(segma len(P)),匹配是 ...