`
H小阿飞
  • 浏览: 274408 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

在UTF-8字符集中,一个中文字并不是2字节

    博客分类:
  • Java
阅读更多

   在UTF-8字符集中一个中文字
   占2个字节的:0个
   占3个字节的:基本等同于GBK,含21000多个汉字
   占4个字节的:中日韩超大字符集里面的汉字,有5万多个

 

UTF-8是一种Unicode编码方式。他是一种不等幅的编码方式,UTF-8编码的字节长度取决于所要编码的字符在ISO   10646中的编码值。在UTF-8中,不同的字符,可能需要1-6个字节来进行编码。对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。对于多字节的UTF-8编码,如果编码包含n个字节,那么第一个字节的前n位为1,第一个字节的第n+1位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。  
   
  例如“未”字,其编码为:0xE69CAA,转换为二进制为:1110   0110   1001   1100   1010   1010,从这里可以看出,该字在UTF-8编码下本身就是3个字节。  
   
  所以,在UTF-8中,一个中文字并不是2个字节,而是超过了两个字节。并不是所有的中文字最后结尾都是0xAA。

分享到:
评论

相关推荐

    Utf8Plumber:阻止流将 UTF-8 字符切成两半并产生无效输入

    UTF-8 管道工在通过某些第三方模块流式传输时,您是否曾在... 它将防止未完成的 UTF-8 字节泄漏到当前块中并在下一个块中提供它。 这是一个关于如何使用它的小例子(CSV 文件中的第一列大写): var fs = require('fs'

    bstr:不需要有效的UTF-8的Rust字符串类型

    bstr 此板条箱为&[u8]和Vec提供了扩展特征,使它们可以用作字节字符串,... 第一个示例仅说明如何有效地遍历stdin中的行,并打印出包含特定子字符串的行: use std :: error :: Error; use std :: io :: { self , W

    lzutf8.js:高性能Javascript字符串压缩库

    是对字符编码的扩展,使用基于算法的可选压缩来扩展UTF-8字节流。 它的一些特性: 仅压缩字符串。 不支持任意字节序列。 在选择算法及其实现方面均对速度进行了强烈优化。 使用低端台式机和1MB字符串进行的近似...

    lora node 解码方案 -Golang.rar

    我们知道,go是用的utf-8编码,utf-8是一种变长的编码,也就是说,对于不同的字符,占据的内存空间是不同的。采用utf-8编码的单个字符,具体占用的内存空间从1字节到4字节之间。比如: package main import ( ...

    grub4dos-V0.4.6a-2017-02-04更新

    例如:echo -e \x18 显示 UTF-8 字符 0x18。 echo -e \X2191 显示 unicode 字符 0x2191。 2016-03-15(yaya) 1.增加动画控制热键 F2:播放/停止。 2.增加动画控制位 0x835b,位0:0/1=停止/播放。 3.增加精简...

    rapidjson-zh

    rapidjson库的使用手册 RapidJSON 是一个 C++ 的 JSON 解析器及生成...例如,RapidJSON 可以在分析一个 UTF-8 文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及 "\u0000" (空字符)。

    charmander:用于显示有关文件文本流的UTF-8信息的命令行程序

    charmander是一个程序,它在标准输入上获取UTF-8格式的数据流,并显示有关字符的信息。 显示带有数字和十六进制值的字符 包含字符名称列表 用红色突出显示无效的UTF-8输入 选项 -b ,-- bytes :显示从0开始的索引...

    Encoding

    网友netstarry写的一个处理字符编码的类,很好的解决了php中字符转换的问题 前一阵子见到了qiushuiwuhen君的关于gbk,unicode,big5的转换的文章 ...在浏览器中使用UTF-8编码察看,将会看到正确的字符.

    day019-io笔记和代码.rar

    * charsetName:字符集名 例如 : "GBK"、"UTF-8" 、"ISO-8859-1" * * 不常用 * 3.String(byte[] bytes) 根据默认字符集将字节数组转换为字符串 * 4.String(byte[] bytes, String ...

    string:为字符串提供面向对象的API,并以统一的方式处理字节,UTF-8代码点和字形簇

    字符串组件 字符串组件为字符串提供面向对象的API,并以统一的方式处理字节,UTF-8代码点和字形簇。 资源资源 并在

    计算机基础知识-编码表.doc

    5、UTF-8 UTF- 8是一种针对Unicode的可变长度字符编码,它可以使用1~4个字节表示一个符号,根据不 同的符号而变化字节长度。当字符在ASCII码的范围时,就用一个字节表示,所以UTF- 8还可以兼容ASCII编码。 "编码表 ...

    Cwd-utf8:Cwd-utf8 的只读发布历史

    名称Cwd::utf8 - 完全支持 UTF-8 的 Cwd版本版本 0.004概要 # Using the utf-8 versions of cwd, getcwd, fastcwd, fastgetcwduse Cwd::utf...描述虽然原始的函数能够很好地处理 UTF-8,但它们期望并以字节而不是字符形

    字符编码学习

    这里只指出,虽然都是用多个字节表示一个符号,但是GB类的汉字编码与后文的Unicode和UTF-8是毫无关系的。 3、Unicode Unicode字符集(简称为UCS),国际标准组织于1984年4月成立ISO/IEC JTC1/SC2/WG2工作组,针对...

    MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci

    因为历史遗留问题,MySQL 中的 utf8 编码并不是真正的 UTF-8,而是阉割版的,最长只有3个字节。当遇到占4个字节的 UTF-8 编码,例如 emoji 字符或者复杂的汉字,会导致存储异常。 从 5.5.3 开始,MySQL 开始用 utf8...

    SuperNotepad

    21) 支持多种格式UTF-8, BIG5, GB2321, Unicode,Unicode big edian, Rich Text, USC-2 22) 查看密码 (扩展对所有已打开的窗口密码均有效Ctrl+D) 23) 正则表达式处理字符 例︰"\b([a-z]+) \1\b"合并多...

    json_zly.rar

    rapidjson的头文件,放入项目即可使用; ...例如,RapidJSON 可以在分析一个 UTF-8 文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及 "\u0000"(空字符)。

    高效的 RapidJSON 解析/生成器支持库,提供 SAX 及 DOM 操作

    高效的 C++ JSON 解析/生成器,提供 SAX 及 DOM 风格 API。...例如,RapidJSON 可以在分析一个 UTF-8 文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及 "\u0000"(空

    PHP自动识别字符集并完成转码详解

    在不能保证对方是否一定使用utf-8编码的情况下,自己做一个编码的检查和转换是很有必要的。 写了个函数来完成这个工作,原理很简单,因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节...

    关于PHP自动判断字符集并转码的详解

    原理很简单,因为gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。而英文不 管在何种编码情况下,都是小于128,只占用一个字节(全角除外)。如果是文件形式...

Global site tag (gtag.js) - Google Analytics