1、字符编码、内码,顺带介绍汉字编码
字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集(DBCS)。
有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。
这里还有一些细节:
GB2312的原文还是区位码,从区位码到内码,需要在高字节和低字节上分别加上A0。
在DBCS中,GB内码的存储格式始终是bigendian,即高位在前。
GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所以GBK和GB18030的低字节最高位都可能不是1。不过这不影响DBCS字符流的解析:在读取DBCS字符流时,只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。
2、Unicode、UCS和UTF
前面提到从ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容(更准确地说,是与ISO-8859-1兼容),与GB码不兼容。例如“汉”字的Unicode编码是6C49,而GB码是BABA。
Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是"UniversalMultiple-OctetCodedCharacterSet",简称为UCS。UCS可以看作是"UnicodeCharacterSet"的缩写。
根据维基百科全书(http://zh.wikipedia.org/wiki/)的记载:历史上存在两个试图独立设计Unicode的组织,即国际标准化组织(ISO)和一个软件制造商的协会(unicode.org)。ISO开发了ISO10646项目,Unicode协会开发了Unicode项目。
在1991年前后,双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从Unicode2.0开始,Unicode项目采用了与ISO10646-1相同的字库和字码。
目前两个项目仍都存在,并独立地公布各自的标准。Unicode协会现在的最新版本是2005年的Unicode4.1.0。ISO的最新标准是10646-3:2003。
UCS规定了怎么用多个字节表示各种文字。怎样传输这些编码,是由UTF(UCSTransformationFormat)规范规定的,常见的UTF规范包括UTF-8、UTF-7、UTF-16。
IETF的RFC2781和RFC3629以RFC的一贯风格,清晰、明快又不失严谨地描述了UTF-16和UTF-8的编码方法。我总是记不得IETF是InternetEngineeringTaskForce的缩写。但IETF负责维护的RFC是Internet上一切规范的基础。
3、UCS-2、UCS-4、BMP
UCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。下面让我们做一些简单的数学游戏:
UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。
UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行(rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。
group0的plane0被称作BasicMultilingualPlane,即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。
将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。
4、UTF编码
UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:
UCS-2编码(16进制)UTF-8字节流(二进制)
0000-007F0xxxxxxx
0080-07FF110xxxxx10xxxxxx
0800-FFFF1110xxxx10xxxxxx10xxxxxx
例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx10xxxxxx10xxxxxx。将6C49写成二进制是:0110110001001001,用这个比特流依次代替模板中的x,得到:111001101011000110001001,即E6B189。
读者可以用记事本测试一下我们的编码是否正确。
UTF-16以16位为单元对UCS进行编码。对于小于0x10000的UCS码,UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码,定义了一个算法。不过由于实际使用的UCS2,或者UCS4的BMP必然小于0x10000,所以就目前而言,可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传输,所以就不得不考虑字节序的问题。
5、UTF的字节序和BOM
UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”?
Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“BillOfMaterial”的BOM表,而是ByteOrderMark。BOM是一个有点小聪明的想法:
在UCS编码中有一个叫做"ZEROWIDTHNO-BREAKSPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZEROWIDTHNO-BREAKSPACE"。
这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZEROWIDTHNO-BREAKSPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZEROWIDTHNO-BREAKSPACE"的UTF-8编码是EFBBBF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EFBBBF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。格力app官方下载-格力app5.4.6.9 最新版
豆葵文件编码批量转换工具(豆葵GB/BIG5/UTF-8转换器)是一个将GB/BIG5/UTF-8等编码相互转换的工具。
最近要把原先的GB编码的java工程转化为UTF-8编码,如果一个个转换,不知道要转到什么时候。还好找了个【GB/BIG5/UTF-8文件编码批量转换程序】,一次性完成转换,爽啊
展开内容
桥架弯头计算器免费版-桥架弯头计算器app7.7 安卓手机版
我的印钞机游戏无限钞票版下载-我的印钞机游戏无限钞票版v1.4.0.1 安卓版
采油小怪2中文版-采油小怪2生日派对汉化版1.0.1 安卓中文版
野蛮时代ios版下载-野蛮时代Brutal Age苹果版0.4.21 官方最新版
广东导游征信系统手机客户端下载-广东导游征信系统app2.0.3安卓最新版
超级大脑在思考下载-超级大脑在思考app1.2.0官方安卓版
酒店经理大亨帝国游戏下载-酒店经理大亨帝国(Hotel Manager: Tycoon Empire)1.0 安卓版
瓦兰代售APP下载-瓦兰代售-游戏账号交易平台v1.1.7 最新版
海嘀租船下载-海嘀租船app1.3.0 安卓版
诛仙手游老玩家返利领取平台-诛仙手游老玩家返利查询网页版官方版
爱漫纸免费下载-爱漫纸APP1.0.0高清版
富甲萌国0.1折版下载-富甲萌国0.1折送十星神将1.0 送十万现金
淘宝互刷平台1.0 官网最新版
铂爵旅拍app下载-铂爵旅拍1.0.4 安卓版
全民指挥官官方版下载-全民指挥官官方版3.6安卓版
9.9/1,901.8M
黑侠APK是一款有着各种资源、工具下载的游戏盒子,这里有各种给力的游戏版本,稀有的资源工具以及惊喜满满的福利专区,功能板块很多,有需要的小伙伴快来东坡下载吧。黑...
凯蒂猫孩子超级市场游戏下载-Supermarket Hello Kitty孩子超级市场1.1.5 官方正版
7.6/1,557.9M
hellokitty系列又一人气非常高的手游,去帮助凯蒂猫前往超市选购妈妈给她的购买清单,在这款游戏中,能够认识很多生活中常见的物品,游戏玩起来非常的自由,任务...
9.7/847.1M
无论你是英语小白还是英语大神都可以来学习,早安英文app有不同的课程内容,根据你的需求自由的定制学习方法,徐徐渐进,中英文对比轻松地学。功能介绍学口语,就来早安...
热血武魂传奇手游下载安装-热血武魂手游v1.7.123 最新版
8.9/683.5M
热血武魂手游无疑是一款能引起玩家热潮的传奇新作,武魂融合技,pk刷图副本无限,超炫的装备没有一件不发光,各种副本入口也很炫酷,喜欢这类武魂游戏的,都可以解锁开启...
人群控制游戏下载-Crowd Control(人群控制手游)1.0安卓版
9.6/75.2M
人群控制手游是一款像素风格的休闲游戏,游戏的玩法就是射击扑过来的僵尸群,不要让他们越线,维持人群的秩序,每一关人数都会增加,所以你的反应能力要快,不然就会被淹没...
地铁跑酷万次郎13.0二改版下载-地铁跑酷万次郎真成品魔改版69.420.0
9.0/40.4M
地铁跑酷万次郎真成品114514.1919810二次魔改版本,修改了游戏中金币以及游戏场景背景的贴图,直接获取全部的皮肤装备,专心跑酷,不用担心其他,获得纯粹的...
职业生涯规划范文下载-计算机专业职业生涯规划范文doc格式免费下载
9.5/950.6M
近年来大家总是听说计算机专业没有以前那么火爆了,已经开始走下坡了,但是我并不这样认为,大家既然选择这个专业就要好好的做下去,做好自己的职业规划对你以后的事业还是...
9.2/497.0M
天天忍者酷跑是一款跑酷手游,结合日系忍者风格,非常的好玩,可以和朋友一起组队竞技,收集金币,获得最终的胜利,挑战全世界的跑酷达人,获得胜利。天天忍者...
花梨阅读app下载-花梨阅读app官方2.85.1196 最新版
10.0/23.0M
花梨阅读是一款使用十分方便的学习软件。这里拥有海量学习题库,支持学习英语、日语、韩语、支持有声点读等多种功能,是中小学学习必备的手机app。移动多媒体知识学习宝...
8.7/1,938.4M
全民五子棋是一款互联网五子棋手游,游戏非常的方便,可以随时开玩,可以和好朋友一起对战,让快乐一起分享,有不同的段位赛,了解自己最真实的水平,可以和全国各地的人一...
8.5/1,696.0M
专升本宝子们看过来!新未来专升本简直是备考“神器”!超牛的老师天团坐镇,讲课又专业又有趣,分分钟拿捏考点!课程资源多到爆,从英语、数学到专业课,知识点掰开揉碎了...
9.0/994.8M
冒险与挂机是一款策略手游,游戏中可以进行多种策略玩法,策略性很强,丰富的挑战,自由度非常的高,引人入胜的剧情,可以进行热血战斗,可以将任务与副本完美结合。冒险与...
央视影音下载安装-cctv5客户端PC版(央视影音)5.1.0.1 官方电脑版
8.9/1,734.9M
cctv5在线直播PC客户端是欧洲杯在线直播软件,cctv5 vip高清无插件可以在线免费观看欧洲杯在线直播,高清直播在线观看,欢迎来下载!cctv5...
9.5/1,227.9M
大神猫商家版app是一个外卖服务平台,商家朋友使用的手机软件,商家可以管理自己的订单,快速管理每天的业务及账单!软件介绍大神猫外卖商家版是入驻叫哇的商家使用的管...
络达检测工具-AB1562_UT华强北耳机络达检测工具1.3.8安卓版
8.0/1,099.8M
AB1562_UT华强北耳机络达检测工具是一个很实用也很准确的耳机检测工具,主要是针对络达芯片检测的,很多耳机看着非常的像真的,甚至很多行家都看不出来,但是用这...
8.5/605.1M
「酷动App」中国知名的新潮3C产品综合连锁零售商。本着“拒绝平庸,开始酷动生活”的品牌精神,结合数码零售+数码社区+3C教学+智能健康,致力于新潮3C产品在中...
9.8/184.1M
我的山羊模拟器手机版是画面清新,但是风格搞笑的模拟游戏,在这里我们将化身为一只山羊,有趣的外表下藏着一颗逗比的心,你要做的就是想办法搞破坏哦,是不是很有趣,快来...
9.9/1,421.7M
扬州招聘网app是一款专为扬州本地打造的招聘软件,用户下载这款软件就能够在上面进行工作信息的查看,app上涵盖的职位信息也是非常的全面,用户可以根据自己的长处进...
神龙武士骑行天下版本下载-神龙武士手游骑行天下版本1.6.0 官网最新版
9.5/717.6M
神龙武士手游新版本全新资料片“骑行天下”上线,新增炫酷坐骑,全新玩法,秘境战场等内容,精彩不断,喜欢神龙武士手游的朋友可以来下载体验!神龙武士手游骑行天下版本介...
Commuters手游安卓版下载-Commuters游戏中文版1.0.2 最新版
9.8/852.4M
这是一款挤公交大作战的游戏,这是城市的早高峰有非常多的上班族挤公交,通过这个游戏你开着一个公交车,需要让更多的人挤上车,非常好玩!游戏介绍Commuters游戏...
山姆赛跑运动员(Sam Runner Alive)2.1 最新版
8.4/1,166.7M
NurieGames推出的一款追逐游戏,SamRunnerAlive,你道路上需要快速的奔跑,注意路上的障碍,还要收集更多的金币。游戏简介在玩这个游戏时你必须灵...
9.8/638.7M
很多的爱狗人士都是需要可以随时的对狗的一些叫声进行了解的,这款最新发布的人狗训练翻译器就可以直接的解决这方面的沟通问题,让你可以更好的遛狗!人狗训练翻译器介绍为...
GeekUninstaller绿色版1.4.4.118 最新版
9.1/529.1M
GeekUninstaller是一个免费的专业强力删除软件,强制卸载软件,体积为1.7M左右,它具有许多出众的功能,从而可以保证卸载无残留,欢迎有需要的朋友前来...
古墓丽影崛起未加密补丁-古墓丽影崛起CONSPIR4CY未加密补丁最新覆盖版
7.5/1,802.5M
前两天才更新了古墓丽影崛起免d破解补丁,昨天听说已经修复漏洞,不能用了,小编特意带来了古墓丽影崛起CONSPIR4CY最新未加密破解补丁,免Steam就能运行,...
8.7/1,897.2M
碉堡三国十连抽版颠覆式的三国故事剧情,更有来自其他宇宙时空中的穿越人物,超带感的人物技能释放,各种动态的粒子光效给你带来极致视觉感受,有丰富的游戏内容,这里有非...