网络日志(2010.4.21)
来源:互联网 发布:mac ps 破解器 编辑:程序博客网 时间:2024/05/16 08:12
读取UTF-8文本并且在控制台里显示,查了好多资料。
以下转自zz:
下面我先简单讲述一下UTF-8编码的有关知识,并且只讲与我编写
的读写UTF-8文本代码有关的知识(如有谬误之处请各位兄弟指正),
详细的理论请各位自己找专业文章看看。
UTF-8 编码字符理论上可以最多到 6个字节长,但目前全世界的所
有文字和符号种类加起来也只要编到 4个字节长就够了。
UTF-8 是以 8位(即 1个字节)为单元对原始码进行编码(注意一
点:这里所讲的原始码都是指Unicode码),并规定:多字节码(2个字
节以上才称为多字节)以转换后第1个字节起头的连续“1”的数目(这
些连续“1”称为标记位),表示转换成几个字节:“110”连续两个
“1”,表示转换结果为2个字节,“1110”表示3个字节,而“11110”
则表示4个字节……跟随在标记位之后的“0”,其作用是分隔标记位和
字符码位。第2~第4个字节的起头两个位固定设置为“10”,也作为标
记,剩下的6个位才做为字符码位使用。
这样,2字节UTF-8码剩下11个字符码位,可用以转换0080~07FF的
原始字符码,3字节剩下16个字符码位,可用以转换0800~FFFF的原始字
符码,由此类推。编码方式的模板如下:
原始码(16进制) UTF-8编码(二进制)
--------------------------------------------
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
……
--------------------------------------------
模板中的“x”表示字符码。
VB能识别的 Ascii码<007F,所以在VB中,Ascii码都只能编为1个
字节的UTF-8码。汉字的 Unicode编码范围为0800-FFFF,所以被编为
3个字节的UTF-8码。
例如“汉”字的Unicode编码是6C49,6C49在0800-FFFF之间,所以
要用3个字节的模板:1110xxxx 10xxxxxx 10xxxxxx。
UTF-8文本文件与Unicode文本文件类似,在文件的头部也有标记字
节,Unicode文件的标记是2个字节:&HFF 和 &HFE,UTF-8文件的标记
是3个字节:&HEF、&HBB 和 &HBF
要写入UTF-8编码的文本文件,关键是对汉字编码的处理。我们从
上述的汉字编码模板就可以看出,对汉字的处理步骤大致为:
第一步:取得汉字的Unicode码
第二步:将Unicode码分解为两个16进制数据
第三步:将这两个16进制数据转换成二进制数据并连接
第四步:将二进制数据分解为三个串,第一个串为4个位,在前面加上
标记位“1110”,第二、三个串均为6个位,分别在前面加上“10”标
记位
第五步:将这三个串分别转换为10进制数据并赋值给字节型数组
第六步:将字节型数组用二进制法写盘,并且要先在文本头存入三个字
节的标记(&HEF、&HBB、&HBF),再将转换好的数据写入
要读取UTF-8编码的文本文件,对汉字的处理步骤大致为:
第一步:用二进制法读入文本数据,赋值给字节型数组,并判断前3个字
节是否UTF-8标记,如果是,才进行以下的处理
第二步:逐个字节判断是否汉字编码,如果是,就再提取后两个数组元
素,共三个数组元素来加以处理
第三步:将这三个数据都转换成16进制数据
第四步:将三个16进制数据都转换成二进制数据
第五步:从第一个二进制数据中去掉前4位,从第二、三个二进制数据
中分别去掉前2位,并将这三个处理后的二进制数据依次连接,成为一
个16位的字串
第六步:从这个二进制串中分别提取前8位和后8位转换成两个10进制
数据,这两个数据就是汉字的Unicode码了,将它们赋值给一个字符型
变量即可
以上转贴内容完毕。
针对他写出的内容,我写出了以下代码。
之所以用到UTF-8,原因是.......做好再说吧。
下面是代码:
网页黑白代码(灾难时期专用):
今日事件:
哀悼玉树地震,所有网页黑白
自己的事件:
无
今日一言:
次のチャンスを待ちましょう!
つぎのちゃんすをまちましょう!
等着下一次机会吧!
- 网络日志(2010.4.21)
- 网络日志(2010.4.6)
- 网络日志(2010.4.8)
- 网络日志(2010.4.12)
- 网络日志(2010.4.13)
- 网络日志(2010.4.16)
- 网络日志(2010.4.17)
- 网络日志(2010.4.18)
- 网络日志(2010.4.19)
- 网络日志(2010.4.20)
- 网络日志(2010.4.22)
- 网络日志(2010.4.23)
- 网络日志(2010.4.24)
- 网络日志(2010.4.25)
- 网络日志(2010.4.26)
- 网络日志(2010.4.27)
- 网络日志(2010.4.28)
- 网络日志(2010.4.29)
- 软件无线电
- AWK高级编程
- 软件开发随记之二 —— 软件界面的Web化
- 我学习的黑客教程
- The error indicates that IIS is in 64 bit mode, while this application is a 32 bit application and thus not compatible
- 网络日志(2010.4.21)
- C#基础
- Apple 的CEO 竟然这样评论 Andriod!
- Spring 中常用的hql查询方法(getHibernateTemplate())(转)
- 原来抽象工厂比简单工厂就是多了一个抽象。
- 例解基于UML的面向对象分析与设计
- Linux 时钟处理机制
- Study Finds Drop in Deaths of Mothers in Developing World
- STRING