编码学习小记

ASCII 8bit

  • 格式: <0> 0000000 - <0> 1111110
  • 区间: 0 ~ 126
  • 特点:第一位始终为0

Unicode

  • 格式:严 -> 4E25 -> 100111000100101
  • 特点:符号集合(一个符号唯一对应一个数值大小) <一张通用数据表>

UTF-8 变 长编码 -> Unicode的内存实现方式'之一'

  • 格式:<0xxxxxxxx> <110xxxxx 10xxxxxx> <1110xxxx 10xxxxxx 10xxxxxx> <11110xxx 10xxxxxx 10xxxxxx 10xxxxxx>
  • 区间 0 ~ 126 5x + 6x 4x + 6x + 6x 3x + 6x + 6x + 6x 可以理解他们不包含,而是组成连续, 对应Unicode的字符表
  • 特点:特定的表示格式,能在存储和网络传输中正确区分字符,表示内容

转换

Unicode -> UTF-8

  • 严 -> 4E25 -> 100111000100101 (数值大小) <15个x>
  • 大于11x,小于16x,三个字节:1110xxxx 10xxxxxx 10xxxxxx
  • 从后面将Unicode bit填入 UTF-8 1110x100 10111000 10100101 (x = 0)

ASCII -> UTF-8

  • ! -> 21(16进制,33十进制) -> 00100001
  • 小于等于7x,一个字节:0xxxxxxx
    填入bit 0x100001 (x = 0)

补充:

  • HTTP协议是以ASCII 码传输<这个先记录>(UTF-8的每一个字节就是一个ASCII)
  • ?? JSON(Dic) -> Data -> [ASCII] (字节为单位)
  • Unicode规范定义:Little endian 和 Big endian,如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式,如果它出现在字节流的中间,则表达零宽度非换行空格的意义,用户看起来就是一个空格
  • UTF-8则没有字节顺序的议题
  • UTF-16 UTF32却有字节顺序
  • 如图:
    编码学习小记_第1张图片
    维基百科-字节顺序标记.png

你可能感兴趣的:(编码学习小记)