Nakeman | Kemin | 半学术IT哥文

己欲立而立人,己欲达而达人。

转载 Unicode是什么?收藏

析Unicode和UTF-8

http://blog.csdn.net/lesterjames/archive/2005/09/28/491619.aspx

1.      各地的方言

  首先说明一下现在常用的一些编码方案:

1.         在中国,大陆最常用的就是GBK18030编码,除此之外还有GBKGB2312,这几个编码的关系是这样的。

n         最早制定的汉字编码是GB2312,包括6763个汉字和682个其它符号

n         95年重新修订了编码,命名GBK1.0,共收录了21886个符号。

n         之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持GBK18030编码。

按照GBK18030GBKGB2312的顺序,3种编码是向下兼容,同一个汉字在三个编码方案中是相同的编码。

 

2.         台湾,香港等地使用的是BIG5编码

3.         日本:SJIS编码

2.      Unicode

  如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言。

  在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容,这就是Unicode的最大好处。

 

  那么Unicode是如何编码的呢?其实非常简单。

  就是将世界上所有的文字用2个字节统一进行编码。可能你会问,2个字节最多能够表示65536个编码,够用吗?

  韩国和日本的大部分汉字都是从中国传播过去的,字型是完全一样的。

  比如:“文”字,GBKSJIS中都是同一个汉字,只是编码不同而已。

  那样,像这样统一编码,2个字节就已经足够容纳世界上所有的语言的大部分文字了。

UCS-2 UCS-4

  Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS

  现在用的是UCS-2,即2个字节编码,而UCS-4是为了防止将来2个字节不够用才开发的。UCS-2也称为基本多文种平面。

  UCS-2转换到UCS-4只是简单的在前面加2个字节0

  UCS-4则主要用于保存辅助平面,例如Unicode 4.0中的第二辅助平面

  20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF - 24000-24FFF - 25000-25FFF -   26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF

  总共增加了16个辅助平面,由原先的65536个编码扩展至将近100万编码。

3.      兼容codepage

  那么既然统一了编码,如何兼容原先各国的文字编码呢?

  这个时候就需要codepage了。

  什么是codepagecodepage就是各国的文字编码和Unicode之间的映射表。

  比如简体中文和Unicode的映射表就是CP936,点这里查看官方的映射表。

以下是几个常用的codepage,相应的修改上面的地址的数字即可。

codepage=936 简体中文GBK

codepage=950 繁体中文BIG5

codepage=437 美国/加拿大英语

codepage=932 日文

codepage=949 韩文

codepage=866 俄文

codepage=65001 unicode UFT-8

 

最后一个65001,据个人理解,应该只是一个虚拟的映射表,实际只是一个算法而已。

 

936中随意取一行,例如:

0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH

前面的编码是GBK的编码,后面的是Unicode

通过查这张表,就能简单的实现GBKUnicode之间的转换。

 

4.      UTF-8

  现在明白了Unicode,那么UTF-8又是什么呢?又为什么会出现UTF-8呢?

  ASCII转换成UCS-2,只是在编码前插入一个0x0。用这些编码,会包括一些控制符,比如 '' '/',这在UNIX和一些C函数中,将会产生严重错误。因此可以肯定,UCS-2不适合作为Unicode的外部编码。

  因此,才诞生了UTF-8。那么UTF-8是如何编码的?又是如何解决UCS-2的问题呢?

例:

E4 BD A0        11100100 10111101 10100000

这是“你”字的UTF-8编码

4F 60          01001111 01100000

这是“你”的Unicode编码

 

按照UTF-8的编码规则,分解如下:xxxx0100 xx111101 xx100000

把除了x之外的数字拼接在一起,就变成“你”的Unicode编码了。

注意UTF-8的最前面3个1,表示整个UTF-8串是由3个字节构成的。

经过UTF-8编码之后,再也不会出现敏感字符了,因为最高位始终为1

 

以下是UnicodeUTF-8之间的转换关系表:

U-00000000 - U-0000007F: 0xxxxxxx

U-00000080 - U-000007FF: 110xxxxx 10xxxxxx

U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

 

Unicode编码转换到UTF-8,简单的把Unicode字节流套到x中就变成UTF-8了。

发表于 @ 2006年03月14日 23:43:00|评论(loading...)

新一篇: 赤道与北极&一些日记 | 旧一篇: 中国人必听—李敖05年“神州”演讲

用户操作
[即时聊天] [发私信] [加为好友]
Kemin
订阅我的博客
XML聚合  FeedSky
Kemin的公告
声明: 本博客部分内容摘自互联网,尊重知识产权,合理使用并仅作学习交流之用。请引用注明出处,并使用以下许可:
Creative Commons license
Share, Remix, Reuse — Legally

推荐使用FireFox | flock | 微软雅黑字体 浏览本博客和体验互联网。
ABOUT
姓名:刘建文
Name:Nakeman Liu
曾用:Kemin Lau
常居:广东深圳
联系keminlau@
gmail.com

州亦难添,诗亦难改,然闲云野鹤,何天而不可飞。 ——宋·尤袤

自诩:野鹤一只,假硕士一位,方向?未定!此所谓野也、假也!
喜好:数学、语言、逻辑和哲学,涉猎心理学、历史和文学等。
诚征:女友一名 要求:不抹脸,不浪发,不踮脚,不搓牌,读点书。
征女贴http://www.douban.com/group/topic/3860194/

野鹤的电子书库
数学
http://www.douban.com/group/topic/3564724/
逻辑学与语言学
http://www.douban.com/group/topic/3565749/
心理学与哲学
http://www.douban.com/group/topic/3565782/

CONTENT



INDEX

FRIENDS

BOOKS

THINKING
a.生活 b.工作 c.牢骚
DOING

GUESTBOOK
MUSIC

FEED
RSS 2.0 Feed

文章分类
收藏
    各种“典”
    《说文解字》
    Dict.CN
    IT 全书 webopedia
    webster.com英英词典
    whatis.com
    中华在线词典
    二十五史在线版
    查听广东话
    洪恩在线词典
    购书及书评
    2688网店
    中国互动出版网
    中国图书网
    卓越
    当当
    新书城
    新华淘书网
    新风雨cnforyou.com
    蔚蓝网
    豆瓣书评(书呆子必去)
    技术社区
    developerfusion
    UML软件工程组织
    vbcity
    中国UNIX.NET
    代码项目codeproject.com
    免费国度
    免费技术图书(推荐)
    技术小费
    源码锻炉sourceforge
    软件工程专家网
    教育资源
    360Doc
    中国论文下载中心
    免费计算机图书
    北京大学微处理器研究开发中心
    开放式课程计划oops
    麻省理工开放课件
    实用网站
    box空间
    mediafire免费空间
    全库网123查
    即存即用live-share
    繁简转换
    线上聚合器netvibes
    未分类
    C++ FAQ LITE
    C++线上参考
    E BOOK
    e书搜索
    informit.com
    Li Jianzhong@Blog(RSS)
    MS学生项目网
    Visual Studio Magazine
    VOA英语教学
    上麻省理工学院
    中国上下五千年
    中国人工智能网
    中国学术论坛
    中学教材
    北大广播台
    知行英语
    计算机世界
    语音技术前沿
    读书中文网
    软件百科(软件下载)
    我的常新帖
    MSN 共勉--个性签名
    我的朋友
    博客中国kemin(RSS)
    开心果的天下
    摇不摇,滚不滚
    最终飘零的专栏
    清冷香中抱膝吟
    精灵音乐馆
    肖菲的BLOG
    线上阅读
    ebookdown
    Google图书搜索
    朗润书目(强烈推荐)
    爱书吧
    超星数字图书馆
    存档
    Csdn Blog version 3.1a
    Copyright © Kemin