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个字节的模板:1110xxxx10xxxxxx10xxxxxx。
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进制数据都转换成二进制数据
unicode字符的种类有五、 从第一个二进制数据中去掉前4位,从第二、三个二进制数据中分别去掉前2位,并将这三个处理后的二进制数据依次连接,成为一个16位的字串
六、 从这个二进制串中分别提取前8位和后8位转换成两个10进制数据,这两个数据就是汉字的Unicode码了,将它们赋值给一个字符型变量即可
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论