ASCII标准
十进制 |
八进制 |
十六进制 |
二进制 |
符号 |
中文解释 |
---|---|---|---|---|---|
0 |
000 |
00 |
00000000 |
NUL |
空字符 |
1 |
001 |
01 |
00000001 |
SOH |
标题开始 |
2 |
002 |
02 |
00000010 |
STX |
正文开始 |
3 |
003 |
03 |
00000011 |
ETX |
正文结束 |
4 |
004 |
04 |
00000100 |
EOT |
传输结束 |
5 |
005 |
05 |
00000101 |
ENQ |
询问 |
6 |
006 |
06 |
00000110 |
ACK |
收到通知 |
7 |
007 |
07 |
00000111 |
BEL |
铃 |
8 |
010 |
08 |
00001000 |
BS |
退格 |
9 |
011 |
09 |
00001001 |
HT |
水平制表符 |
10 |
012 |
0A |
00001010 |
LF |
换行键 |
11 |
013 |
0B |
00001011 |
VT |
垂直制表符 |
12 |
014 |
0C |
00001100 |
FF |
换页键 |
13 |
015 |
0D |
00001101 |
CR |
回车键 |
14 |
016 |
0E |
00001110 |
SO |
移出 |
15 |
017 |
0F |
00001111 |
SI |
移入 |
16 |
020 |
10 |
00010000 |
DLE |
数据链路转义 |
17 |
021 |
11 |
00010001 |
DC1 |
设备控制 1 |
18 |
022 |
12 |
00010010 |
DC2 |
设备控制 2 |
19 |
023 |
13 |
00010011 |
DC3 |
设备控制 3 |
20 |
024 |
14 |
00010100 |
DC4 |
设备控制 4 |
21 |
025 |
15 |
00010101 |
NAK |
拒绝接收 |
22 |
026 |
16 |
00010110 |
SYN |
同步空闲 |
23 |
027 |
17 |
00010111 |
ETB |
传输块结束 |
24 |
030 |
18 |
00011000 |
CAN |
取消 |
25 |
031 |
19 |
00011001 |
EM |
介质中断 |
26 |
032 |
1A |
00011010 |
SUB |
替换 |
27 |
033 |
1B |
00011011 |
ESC |
换码符 |
28 |
034 |
1C |
00011100 |
FS |
文件分隔符 |
29 |
035 |
1D |
00011101 |
GS |
组分隔符 |
30 |
036 |
1E |
00011110 |
RS |
记录分离符 |
31 |
037 |
1F |
00011111 |
US |
单元分隔符 |
十进制 |
八进制 |
十六进制 |
二进制 |
符号 |
中文解释 |
---|---|---|---|---|---|
32 |
040 |
20 |
00100000 |
空格 | |
33 |
041 |
21 |
00100001 |
! |
感叹号 |
34 |
042 |
22 |
00100010 |
" |
双引号 |
35 |
043 |
23 |
00100011 |
# |
井号 |
36 |
044 |
24 |
00100100 |
$ |
美元符 |
37 |
045 |
25 |
00100101 |
% |
百分号 |
38 |
046 |
26 |
00100110 |
& |
与 |
39 |
047 |
27 |
00100111 |
' |
单引号 |
40 |
050 |
28 |
00101000 |
( |
左括号 |
41 |
051 |
29 |
00101001 |
) |
右括号 |
42 |
052 |
2A |
00101010 |
* |
星号 |
43 |
053 |
2B |
00101011 |
+ |
加号 |
44 |
054 |
2C |
00101100 |
, |
逗号 |
45 |
055 |
2D |
00101101 |
- |
连字号或减号 |
46 |
056 |
2E |
00101110 |
. |
句点或小数点 |
47 |
057 |
2F |
00101111 |
/ |
斜杠 |
48 |
060 |
30 |
00110000 |
0 |
0 |
49 |
061 |
31 |
00110001 |
1 |
1 |
50 |
062 |
32 |
00110010 |
2 |
2 |
51 |
063 |
33 |
00110011 |
3 |
3 |
52 |
064 |
34 |
00110100 |
4 |
4 |
53 |
065 |
35 |
00110101 |
5 |
5 |
54 |
066 |
36 |
00110110 |
6 |
6 |
55 |
067 |
37 |
00110111 |
7 |
7 |
56 |
070 |
38 |
00111000 |
8 |
8 |
57 |
071 |
39 |
00111001 |
9 |
9 |
58 |
072 |
3A |
00111010 |
: |
冒号 |
59 |
073 |
3B |
00111011 |
; |
分号 |
60 |
074 |
3C |
00111100 |
< |
小于 |
61 |
075 |
3D |
00111101 |
= |
等号 |
62 |
076 |
3E |
00111110 |
> |
大于 |
63 |
077 |
3F |
00111111 |
? |
问号 |
64 |
100 |
40 |
01000000 |
@ |
电子邮件符号 |
65 |
101 |
41 |
01000001 |
A |
大写字母 A |
66 |
102 |
42 |
01000010 |
B |
大写字母 B |
67 |
103 |
43 |
01000011 |
C |
大写字母 C |
68 |
104 |
44 |
01000100 |
D |
大写字母 D |
69 |
105 |
45 |
01000101 |
E |
大写字母 E |
70 |
106 |
46 |
01000110 |
F |
大写字母 F |
71 |
107 |
47 |
01000111 |
G |
大写字母 G |
72 |
110 |
48 |
01001000 |
H |
大写字母 H |
73 |
111 |
49 |
01001001 |
I |
大写字母 I |
74 |
112 |
4A |
01001010 |
J |
大写字母 J |
75 |
113 |
4B |
01001011 |
K |
大写字母 K |
76 |
114 |
4C |
01001100 |
L |
大写字母 L |
77 |
115 |
4D |
01001101 |
M |
大写字母 M |
78 |
116 |
4E |
01001110 |
N |
大写字母 N |
79 |
117 |
4F |
01001111 |
O |
大写字母 O |
80 |
120 |
50 |
01010000 |
P |
大写字母 P |
81 |
121 |
51 |
01010001 |
Q |
大写字母 Q |
82 |
122 |
52 |
01010010 |
R |
大写字母 R |
83 |
123 |
53 |
01010011 |
S |
大写字母 S |
84 |
124 |
54 |
01010100 |
T |
大写字母 T |
85 |
125 |
55 |
01010101 |
U |
大写字母 U |
86 |
126 |
56 |
01010110 |
V |
大写字母 V |
87 |
127 |
57 |
01010111 |
W |
大写字母 W |
88 |
130 |
58 |
01011000 |
X |
大写字母 X |
89 |
131 |
59 |
01011001 |
Y |
大写字母 Y |
90 |
132 |
5A |
01011010 |
Z |
大写字母 Z |
91 |
133 |
5B |
01011011 |
[ |
左中括号 |
92 |
134 |
5C |
01011100 |
反斜杠 | |
93 |
135 |
5D |
01011101 |
] |
右中括号 |
94 |
136 |
5E |
01011110 |
^ |
音调符号 |
95 |
137 |
5F |
01011111 |
_ |
下划线 |
96 |
140 |
60 |
01100000 |
` |
重音符 |
97 |
141 |
61 |
01100001 |
a |
小写字母 a |
98 |
142 |
62 |
01100010 |
b |
小写字母 b |
99 |
143 |
63 |
01100011 |
c |
小写字母 c |
100 |
144 |
64 |
01100100 |
d |
小写字母 d |
101 |
145 |
65 |
01100101 |
e |
小写字母 e |
102 |
146 |
66 |
01100110 |
f |
小写字母 f |
103 |
147 |
67 |
01100111 |
g |
小写字母 g |
104 |
150 |
68 |
01101000 |
h |
小写字母 h |
105 |
151 |
69 |
01101001 |
i |
小写字母 i |
106 |
152 |
6A |
01101010 |
j |
小写字母 j |
107 |
153 |
6B |
01101011 |
k |
小写字母 k |
108 |
154 |
6C |
01101100 |
l |
小写字母 l |
109 |
155 |
6D |
01101101 |
m |
小写字母 m |
110 |
156 |
6E |
01101110 |
n |
小写字母 n |
111 |
157 |
6F |
01101111 |
o |
小写字母 o |
112 |
160 |
70 |
01110000 |
p |
小写字母 p |
113 |
161 |
71 |
01110001 |
q |
小写字母 q |
114 |
162 |
72 |
01110010 |
r |
小写字母 r |
115 |
163 |
73 |
01110011 |
s |
小写字母 s |
116 |
164 |
74 |
01110100 |
t |
小写字母 t |
117 |
165 |
75 |
01110101 |
u |
小写字母 u |
118 |
166 |
76 |
01110110 |
v |
小写字母 v |
119 |
167 |
77 |
01110111 |
w |
小写字母 w |
120 |
170 |
78 |
01111000 |
x |
小写字母 x |
121 |
171 |
79 |
01111001 |
y |
小写字母 y |
122 |
172 |
7A |
01111010 |
z |
小写字母 z |
123 |
173 |
7B |
01111011 |
{ |
左大括号 |
124 |
174 |
7C |
01111100 |
| |
垂直线 |
125 |
175 |
7D |
01111101 |
} |
右大括号 |
126 |
176 |
7E |
01111110 |
~ |
波浪号 |
127 |
177 |
7F |
01111111 |
删除 |
Unicode
编码原则:U+0000到U+10FFFF中的数
(U+为Unicode代码点的前缀,数字为16进制)
UTF(Unicode Transfomation Format)是Unicode的转换格式,分为UTF-8,UTF-16和UTF-32三种
UTF-8是一种变长的编码,使用1到4个字节表示一个代码点。
编码原则:
第一步:确定代码点范围
代码点范围 (十六进制) |
代码点范围 (十进制) |
UTF-8字节序列 (二进制) |
0000-007F |
0-127 |
0xxxxxxx |
0080-07FF |
128-2047 |
110xxxxx 10xxxxxx |
0800-FFFF |
2048-65535 |
1110xxxx 10xxxxxx 10xxxxxx |
10000-10FFFF |
65536-1114111 |
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
第二步:将代码点的二进制位填入模板中的x
(左右相对顺序不变,从最低位依次开始向高位填充,不足处补零)
第三步:将得到的二进制序列转换为16进制
UTF-8编码的设计原理(1110xxxx等):
- 代表内部字节长度(0xxxxxxx为1字节,110xxxxx有两个1,为2字节,以此类推)
- 消除歧义,明确编码开端(10xxxxxx为中间字节段,而其他可作为字符开始)
- 兼容ASC2的文本(1字节为0开头,与0-127的纯ASC2文本兼容)
UTF-16
也是一种2到4字节的变长编码
需要注意字节序(十六进制)
BE(Big-Endian,UTF-16BE):最高有效字节在前
LE(Little-Endian,UTF-16LE):最低有效字节在前
编码原则(对于代码点u)
第一步:判断代码点范围
若u在U+0000到U+FFFF之间,直接使用对应的二进制编码;
若u在U+10000到U+10FFFF,需要使用代理对
第二步:代理对的计算
1、令u’=u-0x10000,则u’的范围是0x00000到0xFFFFF(共20位长)之间
2、将u’分为前十位(High10)和后十位(Low10)
3、加上偏移量
H=High10+0xD800 L=Low10+0xDC00
- 将H和L(16进制)按两位分别拆开,得到UTF-16编码
BOM(byte order mark)在文件开头标识字节序
FE FF——BE
FF FE——LE
UTF-32(根据Unicode标准,在0x110000及以后的字符无效)
直接采用固定的4个字节表示整个代码点
与UCS-4基本一致
也需要注意字节序(十六进制)
BE(Big-Endian,UTF-32BE):最高有效字节在前
LE(Little-Endian,UTF-32LE):最低有效字节在前
如U+1F4A9——00 01 F4 A9(16进制)
BE:00 01 F4 A9
LE:A9 F4 01 00
特性 |
Unicode |
UCS (Universal Coded Character Set) |
---|---|---|
制定组织 |
Unicode 联盟 (一个行业协会) |
国际标准化组织 (ISO) 和 国际电工委员会 (IEC) |
本质 |
一套完整的标准,包括字符集、编码方案、算法等。 |
primarily 一个字符集标准(即 ISO/IEC 10646)。 |
范围 |
更广泛。不仅定义了字符集,还定义了如何编码(如UTF-8, UTF-16)、排序规则、双向文本显示等。 |
相对狭义。主要关注为每个字符分配一个唯一的编号(码位)。 |
编码方式 |
有多种Unicode转换格式(UTFs),如 UTF-8, UTF-16, UTF-32。 |
有UCS-2和UCS-4编码,但它们现在基本被Unicode的UTF编码所取代。 |
关系 |
实践和应用层面的工业标准。 |
理论和国际标准层面的字符集定义。 |