zoukankan      html  css  js  c++  java
  • 字符编码ASCII、Unicode、UTF-8以及验证

    目录

      1. ASCII码:一共规定了128个字符,用1个字节(8位)来表示,最前1位是0没用上:0100 0001表示A;
      2. Unicode:在ASCII码的基础上扩展,Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储(实现),对于英语字母,UTF-8 编码和 ASCII 码是相同的,Unicode 有多种存储方式;
      3. UTF-8:UTF-8 是 Unicode 的实现方式之一,UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式,它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8 的编码规则很简单,只有二条:
        1. 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
        2. 对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号
        3. Unicode编码用UTF-8存储的对照表:
      序号 Unicode编码(16进制) UTF-8 字节流(二进制)
      1 0000 0000-0000 007F 0xxxxxxx
      2 0000 0080-0000 07FF 110xxxxx 10xxxxxx
      3 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
      4 0001 0000-0010 FFFF 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx
      按上表规则:字的Unicode编码是:U+4E07,二进制:0100 1110 0000 0111,UTF-8应该几个字节存储呢,根据上表4E07在范围序号3,也就是用3个字节存储,把字的二进制拆分,填充x:
      万Unicode编码 U+4E07
      ---- ----
      Unicode编码二进制: 0100 1110 0000 0111
      对应模板(3字节) 1110xxxx 10xxxxxx 10xxxxxx
      填充x后UTF-8二进制 11100100 10111000 10000111
      转为16进制 E4B887
      用notepad和notepad++验证结果,打开 记事本notepad,输入字,另存编码为:UTF-8,再用notepad++打开,选中文字——插件——Converter——ASCII->HEX
      万

      引用自:字符编码笔记:ASCII,Unicode 和 UTF-8

    • 相关阅读:
      【JVM基础】JVM垃圾回收机制算法
      【java基础】- java双亲委派机制
      Java基础(一)
      JVM
      冷知识: 不会出现OutOfMemoryError的内存区域
      疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)
      nor flash之写保护
      spinor/spinand flash之高频通信延迟采样
      nor flash之频率限制
      使用littlefs-fuse在PC端调试littlefs文件系统
    • 原文地址:https://www.cnblogs.com/zoulei0718/p/13589046.html
    Copyright © 2011-2022 走看看