简述UTF-8编码原理

上传人:宝路 文档编号:17049950 上传时间:2017-11-10 格式:DOC 页数:3 大小:26.27KB
返回 下载 相关 举报
简述UTF-8编码原理_第1页
第1页 / 共3页
简述UTF-8编码原理_第2页
第2页 / 共3页
简述UTF-8编码原理_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《简述UTF-8编码原理》由会员分享,可在线阅读,更多相关《简述UTF-8编码原理(3页珍藏版)》请在金锄头文库上搜索。

1、简述 UTF8 编码原理系统自带的记事本有读写 UTF8 文本文件的功能,我想在自编的记事本中也加入这个功能,但在网上查找了一个钟头,竟然找不到用 VB 编写的代码,看来,天降大任于斯人也,大概要由我来开这个头了。于是我在网上狂查 UTF8 的文章,恶补这方面的知识,并且还真的获益非浅,起码从七窍通六窍一窍不通到七窍通一窍略知一二了,呵呵。当我做完最后一次试验时,长长地叹了一口气,美美地伸了一个懒腰,呵呵,真爽啊,一天的时间终于没有白费!这也许就是编程的乐趣吧,当看到程序按照自己的愿望运行时,各位哥们姐们,你们的心情一定也与我是一样的,无比舒畅。下面我先简单讲述一下 UTF8 编码的有关知识,

2、并且只讲与我编写的读写UTF8 文本代码有关的知识(如有谬误之处请各位兄弟指正),详细的理论请各位自己找专业文章看看。UTF-8 编码字符理论上可以最多到 6 个字节长,但目前全世界的所有文字和符号种类加起来也只要编到 4 个字节长就够了。UTF-8 是以 8 位(即 1 个字节)为单元对原始码进行编码(注意一点:这里所讲的原始码都是指 Unicode 码),并规定:多字节码(2 个字节以上才称为多字节)以转换后第 1 个字节起头的连续“1”的数目(这些连续“1”称为标记位),表示转换成几个字节:“110”连续两个“1”,表示转换结果为 2个字节,“1110”表示 3 个字节,而“11110”

3、则表示 4 个字节跟随在标记位之后的“0”,其作用是分隔标记位和字符码位。第 2第 4 个字节的起头两个位固定设置为“10”,也作为标记,剩下的 6 个位才作为字符码位使用。这样,2 字节 UTF-8 码剩下 11 个字符码位,可用以转换 008007FF 的原始字符码,3 字节剩下 16 个字符码位,可用以转换 0800FFFF 的原始字符码,由此类推。编码方式的模板如下:原始码(16 进制)UTF8 编码(二进制)-0000 - 007F 0xxxxxxx 0080 - 07FF 110xxxxx 10xxxxxx 0800 - FFFF 1110xxxx 10xxxxxx 10xxxxx

4、x -模板中的“x”表示字符码。VB 能识别的 Ascii 码007F,所以在 VB 中,Ascii 码都只能编为 1 个字节的 UTF8 码。汉字的 Unicode 编码范围为 0800FFFF,所以被编为 3 个字节的 UTF8 码。例如“汉”字的 Unicode 编码是 6C49,6C49 在 0800-FFFF 之间,所以要用3 个字节的模板:1110xxxx 10xxxxxx 10xxxxxx。UTF8 文本文件与 Unicode 文本文件类似,在文件的头部也有标记字节,Unicode 文件的标记是 2 个字节:&HFF 和 &HFE,UTF8 文件的标记是 3 个字节:&HEF、&

5、HBB 和 &HBF要写入 UTF-8 编码的文本文件,关键是对汉字编码的处理。我们从上述的汉字编码模板就可以看出,对汉字的处理步骤大致为:第一步:取得汉字的 Unicode 码第二步:将 Unicode 码分解为两个 16 进制数据第三步:将这两个 16 进制数据转换成二进制数据并连接第四步:将二进制数据分解为三个串,第一个串为 4 个位,在前面加上标记位“1110”,第二、三个串均为 6 个位,分别在前面加上“10”标记位第五步:将这三个串分别转换为 10 进制数据并赋值给字节型数组第六步:将字节型数组用二进制法写盘,并且要先在文本头存入三个字节的标记(&HEF、&HBB、&HBF),再将

6、转换好的数据写入要读取 UTF-8 编码的文本文件,对汉字的处理步骤大致为:第一步:用二进制法读入文本数据,赋值给字节型数组,并判断前 3 个字节是否 UTF8 标记,如果是,才进行以下的处理第二步:逐个字节判断是否汉字编码,如果是,就再提取后两个数组元素,共三个数组元素来加以处理第三步:将这三个数据都转换成 16 进制数据第四步:将三个 16 进制数据都转换成二进制数据第五步:从第一个二进制数据中去掉前 4 位,从第二、三个二进制数据中分别去掉前 2 位,并将这三个处理后的二进制数据依次连接,成为一个 16 位的字串第六步:从这个二进制串中分别提取前 8 位和后 8 位转换成两个 10 进制数据,这两个数据就是汉字的 Unicode 码了,将它们赋值给一个字符型变量即可

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号