前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于字符编码

关于字符编码

作者头像
Taishan3721
发布2021-12-02 12:50:59
7370
发布2021-12-02 12:50:59
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

如转发,请标明出处!

在计算机中,所有的数据在存储和运算时都是使用二进制数表示。为了互相通信,就必须使用相同的编码规则。ANSI (American National Standard Institute)在1967年发表了一套单字节字符编码方案 - ASCII (American Standard Code for Information Interchange)。后来ISO (International Organization for Standardization) 和IEC (International Electrotechnical Commission)将其定为国际标准 - ISO/IEC 646

这个ISO的简称为啥不是IOS呢

这个ASCII只用到了7个bit,如果要表示中文,那肯定是不够的。所以需要某种多字节编码方案

GB 2312-80 是1980年制定的中国汉字编码国家标准。共收录 7445 个字符。GB2312 兼容标准 ASCII码,而一个汉字占用两个字节,每个字节的最高位为 1。具体办法是:收集了 7445 个字符,组成 94*94 的方阵,每一行称为一个“区”,每一列称为一个“位”,区号位号的范围均为 01-94,区号和位号组成的代码称为区位码,编码范围是0x0101~0x5E5E。将区号和位号分别加上0x20,称为国标码,编码范围就是0x2121~0x7E7E。为了兼容ASCII码,再给国标码的每个字节加0x80,形成机内码,简称内码,是汉字在机器中实际的存储代码。因此GB2312-80标准的内码范围是0xA1A1~0xFEFE

GBK 即汉字内码扩展规范,共收入 21886 个汉字和图形符号,向下与 GB 2312 完全兼容,向上支持 ISO 10646 国际标准。GBK 采用双字节表示,总体编码范围为 8140-FEFE 之间,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 XX7F 一条线

GB 18030,国家标准 GB 18030-2005《信息技术中文编码字符集》,是中华人民共和国现时最新的内码字集。GB 18030 与 GB 2312-1980 和 GBK 兼容,共收录汉字70244个。GB 18030采用多字节编码,每个字可以由 1 个、2 个或 4 个字节组成。编码空间庞大,最多可定义 161 万个字符。支持少数民族的文字、繁体汉字以及日韩字。单字节,其值从 0 到 0x7F,与 ASCII 编码兼容。双字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x40 到 0xFE(不包括0x7F),与 GBK 标准兼容。四字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x30 到 0x39,第三个字节从0x81 到 0xFE,第四个字节从 0x30 到 0x39

Big5,又称为大五码或五大码,是使用繁体中文社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。Big5码是一套双字节字符集,第一个字节称为“高位字节”,第二个字节称为“低位字节”。“高位字节”使用了0x81-0xFE,“低位字节”使用了0x40-0x7E,及0xA1-0xFE

https://home.unicode.org/

Unicode,统一码、万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。早期的Unicode字符集(Unicode Character Set)使用2字节编码,即UCS-2。后来又出现了4字节编码,即UCS-4

UCS在计算机中的存储格式叫做UTF(Unicode Transformation Format)

UCS-2最直接的存储格式就是UTF-16了。UTF-16是完全对应于UCS-2的,即把UCS-2规定的字符直接保存下来。而根据字符序,又分为UTF-16LE (Little Endian)和UTF-16BE (Big Endian)。那如何判断某个文件使用的是UTF-16BE还是UTF-16LE呢?可以在文件头部添加BOM(Byte Order Mark)。由于UCS-2没有定义FFFE, 因此规定只要出现FFFE就是UTF-16LE,出现FEFF就是UTF-16BE

UTF-32就简单了,它用四个字节表示字符,这样就可以完全表示UCS-4,而无需像UTF-16那样使用复杂的算法。 与UTF-16类似,UTF-32也包括UTF-32、UTF-32LE、UTF-32BE三种编码,UTF-32使用的BOM就是FFFE0000(UTF-32LE)和0000FEFF(UTF-32BE)

实际计算机中存储的字符,多数在ASCII的范围内,不管使用UTF-16还是UTF-32都会造成很大的浪费

因此,又提出了用1~4个字节来表示的UTF-8,方式如下

可见,ASCII字符(0000-007F)只使用一个字节,避免了空间的浪费。而且UTF-8不再需要BOM字节了。另外,从表中可以看出,从首字节的取值范围就可以知道编码的字节数,这样大大简化了算法

话说,制定标准的这伙儿人呀,智商实在是高

最后,留个文本的ASCII表,以供查询

ASCII值

Hex

控制/字符

0

0

NUT - null

1

1

SOH - start of headline

2

2

STX - start of text

3

3

ETX - end of text

4

4

EOT - end of transmission

5

5

ENQ - enquiry

6

6

ACK - acknowledge

7

7

BEL - bell

8

8

BS - backspace

9

9

HT - horizontal tab

10

A

LF - line feed

11

B

VT - vertical tab

12

C

FF - form feed

13

D

CR - carriage return

14

E

SO - shift out

15

F

SI - shift in

16

10

DLE - data link escape

17

11

DC1 - device control 1

18

12

DC2 - device control 2

19

13

DC3 - device control 3

20

14

DC4 - device control 4

21

15

NAK - negative acknowledge

22

16

SYN - synchronous idle

23

17

ETB - end of trans. block

24

18

CAN - cancel

25

19

EM - end of medium

26

1A

SUB - substitute

27

1B

ESC - escape

28

1C

FS - file separator

29

1D

GS - group separator

30

1E

RS - record separator

31

1F

US - unit separator

ASCII值

Hex

字符

32

20

(space)

33

21

!

34

22

"

35

23

#

36

24

$

37

25

%

38

26

&

39

27

,

40

28

(

41

29

)

42

2A

*

43

2B

+

44

2C

,

45

2D

-

46

2E

.

47

2F

/

48

30

0

49

31

1

50

32

2

51

33

3

52

34

4

53

35

5

54

36

6

55

37

7

56

38

8

57

39

9

58

3A

:

59

3B

;

60

3C

<

61

3D

=

62

3E

>

63

3F

?

ASCII值

Hex

字符

64

40

@

65

41

A

66

42

B

67

43

C

68

44

D

69

45

E

70

46

F

71

47

G

72

48

H

73

49

I

74

4A

J

75

4B

K

76

4C

L

77

4D

M

78

4E

N

79

4F

O

80

50

P

81

51

Q

82

52

R

83

53

S

84

54

T

85

55

U

86

56

V

87

57

W

88

58

X

89

59

Y

90

5A

Z

91

5B

[

92

5C

/

93

5D

]

94

5E

^

95

5F

_

ASCII值

Hex

字符

96

60

97

61

a

98

62

b

99

63

c

100

64

d

101

65

e

102

66

f

103

67

g

104

68

h

105

69

i

106

6A

j

107

6B

k

108

6C

l

109

6D

m

110

6E

n

111

6F

o

112

70

p

113

71

q

114

72

r

115

73

s

116

74

t

117

75

u

118

76

v

119

77

w

120

78

x

121

79

y

122

7A

z

123

7B

{

124

7C

|

125

7D

}

126

7E

`

127

7F

DEL

我是泰山 专注VX好多年

一起学习 共同进步

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档