Skip to content

编码

ASCII码

7位二进制 表示范围 0 ~ 127

  • 0 ~ 31 127 控制字符或通信专用字符 (不可显示)
  • 32 ~ 126 字符,其中 48~57 是0到9阿拉伯数字,65 ~ 90 大写字母, 97 ~ 122 小写字母

Unicode 编码方案

又叫做统一码、万国码,为世界上所有文字系统中的每个字符分配一个唯一的数字标识符,以便在计算机中进行处理。

  • 最新版本 15.0 2022年9月 149,186字符 0x246C2
  • Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)
  • 编码范围是从 U+0000 到 U+10FFFF,其中 U+0000 到 U+FFFF 被称为基本多文种平面,U+10000 到 U+10FFFF 被称为补充平面

UTF-8

是一种用来表示Unicode字符集的可变长度字符编码,使用1至4个字节来表示不同的字符

  • UTF-8编码的特点是兼容ASCII编码 0xxxxxxx
  • 第一字节的前几位表示该Unicode字符的长度,1110xxxx前三位表示该字符长度为3字节
  • 除了第一个字节外,其余字节的头两个比特都是以 10 开始
码点的位数码点起值码点终值字节序列Byte 1Byte 2Byte 3Byte 4
7U+0000U+007F10xxxxxxx
11U+0080U+07FF2110xxxxx10xxxxxx
16U+0800U+FFFF31110xxxx10xxxxxx10xxxxxx
21U+10000U+1FFFFF411110xxx10xxxxxx10xxxxxx10xxxxxx

URL编码

是一种将URL中的非字母数字字符转换成%xx

  • 对于字母数字字符,保持不变
  • 对于一些特殊符号不进行编码 "(-_.!~*'()"
  • 对于ASCII码值小于等于127的非字母数字字符,将其转换为%xx格式,xx为该字符的16进制ASCII码值
  • 对于非ASCII字符,先将其转换为UTF-8编码(get post 默认是有网站的编码方式 可能是GB2312),然后将UTF-8编码转换为%xx格式

demo


\u821c Unicode 1000 0010 0001 1100
0xE8889C UTF-8 11101000 10001000 10011100
%E8%88%9C URL

Base64

Base64顾名思义,就是基于64个可打印字符来表示二进制数据的一种方法

数值字符数值字符数值字符数值字符
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/
  • 将每三个字节作为一组,一共是24个二进制位
  • 将这24个二进制位分为四组,每个组有6个二进制位
  • 在每组前面加两个00,扩展成32个二进制位,即四个字节
  • 根据表,得到扩展后的每个字节的对应符号,这就是Base64的编码值
  • 不足三个字节的组用=补齐

demo

s13
115 49 51 ascii 01110011 00110001 00110011
00011100 00110011 00000100 00110011 Base64 28 51 4 51
czEz 对照表

数据库

MySQL数据库使用字符集和校对规则来实现以字符为单位而不是字节为单位进行存储和排序。字符集定义了字符的编码方式,而校对规则定义了字符的比较和排序规则
字符编码方式 UTF-8、GBK
校对规则决定了字符的比较和排序规则,例如是否区分大小写、是否区分重音符号