`
tomEnjoy
  • 浏览: 145762 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

utf-8编码原理

    博客分类:
  • java
VB 
阅读更多
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 汉字码表

    #### UTF-8编码原理 UTF-8(Unicode Transformation Format - 8 bits)是一种变长字符编码,由Ken Thompson于1992年设计,旨在解决多语言环境下字符编码兼容性问题。其核心优势在于能够以不同的字节长度来表示不同...

    UTF-8 编码转换工具

    1. **UTF-8编码原理** UTF-8的全称是“8位无符号字符转换格式”(UCS Transformation Format - 8 bit)。每个Unicode字符在UTF-8中可以由1到4个字节表示。简单来说,对于ASCII字符(包括英文、数字和一些特殊符号)...

    UTF-8编码和GBK编码互转,一个头文件搞定!跨平台不使用第三方库

    原理是将UTF-8编码的汉字、字母、符号、数字等转换成unicode编码,而unicode和GBK编码存在对应关系,所以只需要将对应的unicode编码的数据对应转换码表(查表)即可得到GBK编码的内容,实现UTF-8和GBK编码互转。...

    中文转UTF-8编码

    #### 三、中文转UTF-8编码原理 在UTF-8编码中,对于不同范围内的Unicode字符,编码方式有所不同: 1. **单字节编码**:对于ASCII字符集中的字符(即Unicode值在0x00~0x7F之间的字符),UTF-8编码就是字符本身的值...

    UTF-8汉字码表.txt

    ### UTF-8编码详解 #### 一、简介 在计算机科学领域中,字符编码是将字符映射到二进制数字的一种方式。其中,UTF-8(8位通用转换格式)是一种可变长度的字符编码,它兼容ASCII,并且能够表示Unicode标准中的所有...

    UTF-8编码格式转换

    1. **UTF-8编码原理**:UTF-8编码使用1到4个字节表示一个Unicode字符,根据字符的Unicode码点决定字节长度。基本拉丁字母(ASCII字符)使用单字节表示,其他字符则使用更多字节。每个字节的最高位用来指示后续字节的...

    UTF-16汉字编码表

    与UTF-8相比,UTF-16在处理包含大量非拉丁文字符的语言时具有更好的性能。 #### 二、UTF-16编码原理 UTF-16将Unicode字符集中的每一个字符映射到一个16位或32位的数值上。对于基本多文种平面(Basic Multilingual ...

    汉字字符编码(utf-8 unicode gb2312)

    - **UTF-8中文字符表.txt**:这个文件可能包含了使用UTF-8编码的所有中文字符,每个字符会以UTF-8编码的形式展示,通常用于验证程序对UTF-8编码的支持或进行字符编码教学。 - **unicode 汉字表.txt**:此文件很可能...

    utf-8码转换器(转换成utf-8码)

    UTF-8编码是一种广泛使用的字符编码标准,它能够表示Unicode字符集中的所有字符。这个“utf-8码转换器”程序是用SWT(Standard Widget Toolkit)开发的,旨在帮助用户将非UTF-8编码的文本转换为UTF-8编码。在IT行业...

    易语言UTF-8编码转换工具

    通过研究和实践这个易语言UTF-8编码转换工具源码,开发者可以深入了解易语言的文件操作、字符串处理以及字符编码原理,同时提高程序设计能力。对于易语言社区而言,这样的开源项目也是促进技术交流和学习的良好资源...

    UTF-8转ANSI文本文件转换器

    转换器的工作原理通常是读取UTF-8编码的文件,解析其中的每个字符,然后根据ANSI编码的规则重新编码。由于两种编码的字符映射不完全相同,转换过程中可能会出现乱码情况,特别是当源文件包含ANSI编码不支持的字符时...

    Patchwork UTF-8:处理UTF-8格式字符串的便携类库

    通过阅读和理解Patchwork-UTF8-master源代码,开发者可以深入学习UTF-8编码原理,提升对字符编码的理解,并且能够灵活运用这些工具解决实际开发中遇到的问题。此外,了解并使用这样的库还有助于提升代码质量,避免...

    常用汉字utf-8字符集.txt

    #### UTF-8编码原理 UTF-8编码通过使用1到4个字节来表示Unicode字符,对于常用的拉丁文、希腊文、西里尔文以及包括汉字在内的其他语言文字,它能够高效地进行编码。例如,ASCII字符只需一个字节,而大多数现代语言...

    VB6.0 UTF-8转换GB2312函数

    在VB6.0编程环境中,有时我们需要处理不同字符编码之间的转换,例如将UTF-8编码的字符串转换为GB2312编码。UTF-8是一种广泛使用的Unicode编码,而GB2312是中国大陆常用的简体中文字符集,主要用于早期的计算机系统。...

    bat脚本将csv格式UTF-8批量转ANSI

    本知识点将重点讨论如何使用批处理脚本(BAT)来解决这个问题,特别是在Excel中打开UTF-8编码的CSV文件时遇到的中文乱码问题。 标题中的"bat脚本将csv格式UTF-8批量转ANSI"指的是利用批处理脚本来自动化转换一批UTF...

    求汉字编码,不满足UTF-8要求的输出-1

    UTF-8 编码原理 UTF-8(8位通用转换格式)是一种可变长度的字符编码,用于表示 Unicode 字符集。UTF-8 的设计使得它可以兼容 ASCII,并且能够通过不同的字节数来表示不同的 Unicode 字符。具体来说,UTF-8 支持...

    GB/BIG5/UTF-8 文件编码批量转换程序

    "GB/BIG5/UTF-8 文件编码批量转换程序"就是解决这个问题的工具,它可以将GB2312(GBK)、BIG5编码的文件批量转换为UTF-8编码,确保在各种环境中正确显示文本。 3. **批量转换** 批量转换功能使得用户无需逐个文件...

    Txt批量转UTF-8的工具

    2. UTF-8编码:这是一种Unicode的变体,支持几乎世界上所有的字符,包括汉字、日文、韩文等。UTF-8的特点是它使用1至4个字节表示一个字符,英文字符和ASCII字符只占用1个字节,这使得它在互联网上传输和存储时更为...

    GB2312转UTF-8(C代码)

    UTF-8的一个显著特点是兼容ASCII编码,对于ASCII字符,UTF-8编码与ASCII编码完全相同,仅用一个字节表示。对于非ASCII字符,UTF-8使用1到4个字节来表示,这样设计使得在多数英文为主的系统中,可以有效利用存储空间...

    GBK 与 UTF-8 间编码转换

    相反,从UTF-8到GBK的转换则需要识别出UTF-8编码的字节序列,找到对应的Unicode码点,再查找这个码点在GBK编码中的对应双字节序列。 在进行编码转换时,需要注意以下几点: 1. 检查原始文件的编码格式,避免乱码...

Global site tag (gtag.js) - Google Analytics