Unicode编码和区域编码有什么区别? unicode编码 unicode在线转码

本文非原创,引用自http://developer.ibm.com/zh/articles/unicode-programming-language/,只是对原文中做了筛选和纠正错别字 。
背景概述我们都知道计算机是不能直接存储字母,数字,图片,符号等,计算机能处理和工作的唯一单位是”比特位(bit)”,一个比特位通常只有 0 和 1,是(yes)和否(no),真(true)或者假(false)等等我们喜欢的称呼 。利用比特位序列来代表字母,数字,图片,符号等,我们就需要一个存储规则,不同的比特序列代表不同的字符,这就是所谓的”编码” 。反之,将存储在计算机中的比特位序列(或者叫二进制序列)解析显示出来成对应的字母,数字,图片和符号,称为”解码” 。提到编码不得不说到字符集,因为任何一种编码方式都会有一个字符集与之对应 。
然而计算机领域通常所讲的字符集实际上是指字符编码集,而不是传统意义上的字符库,除了包括一个系统支持的所有抽象字符(如国家文字、标点符号、图形符号、数字等)外,还包括字符所对应的一个数值,所以通常是一个二维表,下文提到的字符集都是指字符编码集 。常见字符集如 ASCII 字符集、ISO-8859-X、GB2312 字符集(简中)、BIG5 字符集(繁中)、GB18030 字符集、Shift-JIS 等等 。之前的很长一段时间内,字符集和字符编码区分不是很严格,因为一般一种字符集只对应一种编码方式,但是这些编码方式存在下面的问题:
没有一种编码可以覆盖全世界所有国家的字符;各种编码之间也会存在冲突的现象,两种不同编码方式可能使用同一个编码代表不同的字符,亦或用不同的编码代表同一个字符;一个指定的机器(比如我们的服务器)将需要支持许多不同的编码方式,当数据在不同的机器之间传输或者在不同的编码之间转换时,很容易产生乱码问题 。多语言软件制造商组成的统一码联盟(The Unicode Consortium)于 1991 年发布的统一码标准(The Unicode Standard),定义了一个全球统一的通用字符集即 Unicode 字符集解决了上述的问题 。统一码标准为每个字符提供一个唯一的编号,旨在支持世界各地的交流,处理和显示现代世界各种语言和技术学科的书面文本 。此外,它支持许多书面语言的古典和历史文本,不管是什么平台,设备,应用程序或语言,都不会造成乱码问题,它已被所有现代软件供应商采用,是目前所有主流操作系统,搜索引擎,浏览器,笔记本电脑和智能手机以及互联网和万维网(URL,HTML,XML,CSS,JSON 等)中表示语言和符号的基础 。统一码标准的一个版本由核心规范、Unicode 标准、代码图、Unicode 标准附件以及 Unicode 字符数据库(Unicode Character Database 简写成 UCD)组成,同时也是开发的字符集,在不断的更加和增加新的字符,最新的版本为 Unicode 10.0.0 。
在 Unicode 字符集发布的第三年,ISO/IEC 联合发布了通用多八位编码字符集简称为 UCS(Universal Character Set 通用字符集),也旨在使用全球统一的通用字符集 。两套通用字符集使用起来又存在麻烦,后来统一码联盟与 ISO/IEC 经过协商,到到 Unicode 2.0 时,Unicode 字符集和 UCS 字符集基本保持了一致 。现在虽然双方都发布各自的版本,但两套字符集是相互兼容的,Unicode 字符集使用比 UCS 字符集更加广泛 。
Unicode 介绍世界经济日益全球化的同时,一个应用程序需要在全球范围内使用势在必然,基于 Unicode 的应用程序能够很好地处理来自世界各地的用户文本,并适应其文化习俗 。它通过消除每种语言的构建,安装和维护更新来最大限度地降低成本 。Unicode(与其并行 ISO 10646 标准)标准除了覆盖全球所有地区国家使用的字符外,它还定义了一系列文本处理的数据和算法,极大简化了 Unicode 的应用,并确保所有遵守其标准的软件产生相同的结果 。在过去十年的广泛应用中,Unicode 成为互联网的基石 。
Unicode 编码字符集旨在收集全球所有的字符,为每个字符分配唯一的字符编号即代码点(Code Point),用 U+紧跟着十六进制数表示 。所有字符按照使用上的频繁度划分为 17 个平面(编号为 0-16),即基本的多语言平面和增补平面 。基本的多语言平面(英文为 Basic Multilingual Plane,简称 BMP)又称平面 0,收集了使用最广泛的字符,代码点从 U+0000 到 U+FFFF,每个平面有 2^16=65536 个码点;增补平面从平面 1~16,分为增补多语言平面(平面 1)、增补象形平面(平面 2)、保留平面(平 3~13)、增补专用平面等,每个增补平面也有 2^16=65536 个码点 。所以 17 个平面总计有 17 × 65,536 = 1,114,112 个码点 。图 1 是 Unicode 平面分布图,图 2 是 Unicode 各个平面码点空间 。