编码
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 1 | Byte 2 | Byte 3 | Byte 4 |
---|---|---|---|---|---|---|---|
7 | U+0000 | U+007F | 1 | 0xxxxxxx | |||
11 | U+0080 | U+07FF | 2 | 110xxxxx | 10xxxxxx | ||
16 | U+0800 | U+FFFF | 3 | 1110xxxx | 10xxxxxx | 10xxxxxx | |
21 | U+10000 | U+1FFFFF | 4 | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |
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个可打印字符来表示二进制数据的一种方法
数值 | 字符 | 数值 | 字符 | 数值 | 字符 | 数值 | 字符 |
---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w |
1 | B | 17 | R | 33 | h | 49 | x |
2 | C | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | l | 53 | 1 |
6 | G | 22 | W | 38 | m | 54 | 2 |
7 | H | 23 | X | 39 | n | 55 | 3 |
8 | I | 24 | Y | 40 | o | 56 | 4 |
9 | J | 25 | Z | 41 | p | 57 | 5 |
10 | K | 26 | a | 42 | q | 58 | 6 |
11 | L | 27 | b | 43 | r | 59 | 7 |
12 | M | 28 | c | 44 | s | 60 | 8 |
13 | N | 29 | d | 45 | t | 61 | 9 |
14 | O | 30 | e | 46 | u | 62 | + |
15 | P | 31 | f | 47 | v | 63 | / |
- 将每三个字节作为一组,一共是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
校对规则决定了字符的比较和排序规则,例如是否区分大小写、是否区分重音符号