字符编码 UTF-8 学习笔记

UTF-8

  • UTF-8 是 Unicode标准中的一种 , 还有 UTF-16 , UTF-32
  • UTF-8 的长度可变, 例如字母站一字节,汉字占三字节
  • UTF-8 分为带BOM开头的 , 和不带BOM开头的, 两种
    BOM占用开头三字节, 分别是 : 0xef , 0xbb , 0xbf
  • UTF-8 不需要BOM就能识别, 它有明显的特点

UTF-8 编码的特点, 可以用来识别文件格式是否为 UTF-8

百度百科说UTF-8最大支持4字节,

  1. 一个US-ASCIl字符只需1字节编码(Unicode范围由U+0000~U+007F)。
  2. 带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等字母则需要2字节编码(Unicode范围由U+0080~U+07FF)。
  3. 其他语言的字符(包括日韩文字、东南亚文字、中东文字等)包含了大部分常用字,使用3字节编码。
  4. 其他极少使用的语言字符使用4字节编码。

但看其特点, 支持6字节也是可以的

  1. 一字节 0xxxxxxx
  2. 二字节 110xxxxx 10xxxxxx
  3. 三字节 1110xxxx 10xxxxxx 10xxxxxx
  4. 四字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
  5. 五字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  6. 六字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

一字节时和ascii , iso8859-1 , gbk 是一样的, 不能用来判断
二字节开始的规律
一个字节二进制有几个1开头, 后面就有几减一个10开头的字节
五字节和六字节不是Unicode编码范围, 2003年RFC3629规定Utf-8只能使用原Unicode规定的区域(小于等于四字节)

JAVA 的 UTF-8 相关

Java 的 sun.nio.cs.UTF_8 类中有一段注释 , 也可以参考

/* Legal UTF-8 Byte Sequences
 *
 * #    Code Points      Bits   Bit/Byte pattern
 * 1                     7      0xxxxxxx
 *      U+0000..U+007F          00..7F
 *
 * 2                     11     110xxxxx    10xxxxxx
 *      U+0080..U+07FF          C2..DF      80..BF
 *
 * 3                     16     1110xxxx    10xxxxxx    10xxxxxx
 *      U+0800..U+0FFF          E0          A0..BF      80..BF
 *      U+1000..U+FFFF          E1..EF      80..BF      80..BF
 *
 * 4                     21     11110xxx    10xxxxxx    10xxxxxx    10xxxxxx
 *     U+10000..U+3FFFF         F0          90..BF      80..BF      80..BF
 *     U+40000..U+FFFFF         F1..F3      80..BF      80..BF      80..BF
 *    U+100000..U10FFFF         F4          80..8F      80..BF      80..BF
 *
 */

public final class UTF_8 extends Unicode {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kfepiza

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值