
类型: FPS 版本: V3.9
大小: 1,778.0 时间: 2025-11-18





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来标记文本文件的编码方式的。微信红包封面免费领取序列号
豆葵文件编码批量转换工具(豆葵GB/BIG5/UTF-8转换器)是一个将GB/BIG5/UTF-8等编码相互转换的工具。
最近要把原先的GB编码的java工程转化为UTF-8编码,如果一个个转换,不知道要转到什么时候。还好找了个【GB/BIG5/UTF-8文件编码批量转换程序】,一次性完成转换,爽啊
网上好的兼职软件
1,037.4M
医学生每个人都会参与考试,为了让考生更好的参与考试,小编为你提供医研梦app,拥有海量医学题库,支持在线练习,模拟考试让你提前体验考试氛围,错题练习,巩固知识点...
我的农场能提现笔趣阁
1,633.1M
不知道去哪里下载医疗文献,这款免费医学文献下载app可以帮助你,提供一站式医学专业服务,海量医学文献自由检索,提供免费下载。免费医学文献下载功能特色万方文献、维...
第一创业证券佣金多少
1,202.8M
正交跳跃是一款操作简单的全新跳跃躲避类游戏。游戏画风很棒,玩家将在游戏中操控自己的角色进行跳跃挑战。丰富的游戏内容,超级多角色可以选择,很考验你的几何思维和反应...
一天赚五百元怎么赚
1,414.6M
淳安本地人的新闻资讯软件,淳安手机台,软件以视音频信息服务为特色,具有淳直播、淳视频等版块,方便淳安人民获取新闻资讯。应用介绍淳安手机台是淳安县广播电视台主办的...
亿百体育怎么提现不了
334.2M
卡布西游窗口化工具是一款绿色免费的卡布西游游戏窗口化软件,为了方便大家能够更加便捷的进行游戏,通过本工具将游戏窗口化,不仅可以多开游戏,还可以一边玩游戏,一遍查...
苹果比心提现
878.0M
鱼丸捕鱼大作战360版是大家很喜爱的一个版本,作为捕鱼类游戏,很少有能做到各种创新的,而这款鱼丸捕鱼大作战足够有趣,各种新鲜的活动,丰厚的新手奖励,各式各样的鱼...
法语翻译兼职怎么收费
1,052.1M
乐药购是药帮开发的软件,支持扫码查价、品种搜索、订单管理、资质管理、电子发票等,给您最便捷、安全、省心的网上购药体验。乐药购为供采双方提供首营资质交换和保管服务...
发售赚任务赚钱
1,963.9M
来到动物酒吧游戏当中,化身酒吧老板,和一群动物们云蹦迪;这是一款主要为动物们开设的酒吧经营游戏,每天都有不同的活动任务,多种主题尽情享受其中的欢乐,这里的玩法非...
老板豪客棋牌
1,674.8M
即速找房是一款非常实用的找房租房手机软件,在这里每天都会有新的房子信息推送,让用户第一时间掌握,而且还有很多职业顾问会帮助用户解决各种疑惑问题,高效便捷,对于那...
打牌的app可以提现的
1,865.8M
大学生入党思想汇报思想汇报一般采用书面形式(当然,也有采用口头形式的情况)。那么大学生入党思想汇报应该怎么写呢?本节内容小编就为大家整理带来了一...
无他棋牌老板是哪里的
484.8M
双飞燕办公飞梭高效软件是一款非常不错的鼠标功能增强工具。为G10系列无线鼠标而设计。有需要的可以来东坡下载使用!双飞燕办公飞梭高效软件说明双飞燕办公飞梭高效软件...
淘宝偏门冷门暴利行业
826.3M
白蛇缘劫一款以中国传统神话改编的巨作,在传统的剧情之中加入了很多全新的元素在里面,你将深入剧情之中体验人物的喜怒哀乐,游戏中战斗特效是非常多的,以摇杆操作为亮点...
流浪武士搬砖称号选择
1,886.6M
这是一款非常好玩的小猫合成类型的游戏,可玩性高,在这里你可以体验到更多的玩法,各种品种的猫咪享受有各种性格特点,非常好玩!小猫家庭手游介绍小猫家庭是一个有趣而可...
澳门电子游戏注册送40
1,592.8M
环球少儿是一款很专业的学习教育软件。专注于3-8岁学龄前儿童智慧成长,为孩子提供优质的教育服务内容。各种趣味学习元素,让孩子更好的成长,激发孩子的学习兴趣,更快...
代理未来小本赚钱买卖
1,993.5M
粤语同行app是一款非常实用的粤语学习软件,用户下载这款软件能够在上面进行非常便捷的粤语学习功能,app上使用汉字粤语话来帮助用户加强粤语的学习理解,还有在线翻...
现金棋牌捕鱼电玩
2025/09/23 17:51
做蛋糕赚钱吗怎么经营
2025/09/27 11:02
金德棋牌可提现
2025/09/21 09:34
网络黑客赚钱方法大全
2025/09/13 23:31
昆明棋牌西元软件下载
2025/09/22 05:25
摆地摊能赚钱么
2025/09/19 09:28
小型棋牌室平面图
2025/09/22 10:56
学艺术怎么赚钱知乎
2025/09/15 06:38
狗万提现拒绝
2025/09/24 16:56
小说变现怎么赚钱
2025/09/27 12:22
利用快递赚钱漏洞
2025/09/16 00:55
在家兼职淘宝提佣金可靠吗
2025/09/30 18:46
可以一天赚200的网站
2025/09/13 09:02
赚钱的小吃项目
2025/09/13 13:46
梅县兼职
2025/09/30 03:18
梅县兼职
2025/09/30 03:18更新
磁带、铁皮青蛙、玻璃球、四驱车、果丹皮......跟着王蓝莓一起回到童年,王蓝莓开了一家小卖部,游戏玩家需要帮助王蓝莓好好的经营小卖部,体验进货、商品的摆放、售...
支持 ( 41 ) 盖楼(回复)
支持 ( 93 ) 盖楼(回复)
支持 ( 40 ) 盖楼(回复)
支持 ( 128 ) 盖楼(回复)
支持 ( 126 ) 盖楼(回复)
支持 ( 178 ) 盖楼(回复)
支持 ( 8 ) 盖楼(回复)
支持 ( 81 ) 盖楼(回复)
支持 ( 109 ) 盖楼(回复)
支持 ( 105 ) 盖楼(回复)
支持 ( 61 ) 盖楼(回复)
支持 ( 142 ) 盖楼(回复)
支持 ( 190 ) 盖楼(回复)
支持 ( 79 ) 盖楼(回复)
支持 ( 154 ) 盖楼(回复)
支持 ( 198 ) 盖楼(回复)
支持 ( 72 ) 盖楼(回复)
支持 ( 100 ) 盖楼(回复)
支持 ( 198 ) 盖楼(回复)
支持 ( 176 ) 盖楼(回复)