日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等幾種常用編碼區別

?

???? 最近老為編碼問題而煩燥,下定決心一定要將其弄明白!本文主要總 結網上一些朋友提供的 ascii,ISO-8859-1,unicode, utf8,gb2312,big5,gbk,gb18030等幾種常區別.
????

1. ASCII
????目前計算機中用得最廣泛的字符集及其編碼,是由美國國家標準局 (ANSI)制定的ASCII碼(American Standard Code for Information Interchange,美國標準信息交換碼),它已被國際標準化組織(ISO)定為國際標準,稱為ISO 646標準。適用于所有拉丁文字字母,ASCII碼有7位碼和8位碼兩種形式。

??? ?我們知道,在計算機內部,所有的信息最終都表示為一個二進制的字 符串。每一個二進制位(bit)有0和1兩種狀態,因此八個二進制位就可以組合出256種狀態,這被稱為一個字節(byte)。也就是說,一個字節一共可 以用來表示256種不同的狀態,每一個狀態對應一個符號,就是256個符號,從0000000到11111111。

ASCII

ASCII

控制字符

ASCII

控制字符

ASCII

控制字符

ASCII

控制字符

0

NUL

32

(space)

64

@

96

1

SOH

33

65

A

97

a

2

STX

34

66

B

98

b

3

ETX

35

#

67

C

99

c

4

EOT

36

$

68

D

100

d

5

ENQ

37

%

69

E

101

e

6

ACK

38

&

70

F

102

f

7

BEL

39

,

71

G

103

g

8

BS

40

(

72

H

104

h

9

HT

41

)

73

I

105

i

10

LF

42

*

74

J

106

j

11

VT

43

+

75

K

107

k

12

FF

44

,

76

L

108

l

13

CR

45

-

77

M

109

m

14

SO

46

.

78

N

110

n

15

SI

47

/

79

O

111

o

16

DLE

48

0

80

P

112

p

17

DCI

49

1

81

Q

113

q

18

DC2

50

2

82

R

114

r

19

DC3

51

3

83

X

115

s

20

DC4

52

4

84

T

116

t

21

NAK

53

5

85

U

117

u

22

SYN

54

6

86

V

118

v

23

TB

55

7

87

W

119

w

24

CAN

56

8

88

X

120

x

25

EM

57

9

89

Y

121

y

26

SUB

58

:

90

Z

122

z

27

ESC

59

;

91

[

123

{

28

FS

60

<?

92

"

124

|

29

GS

61

=

93

]

125

}

30

RS

62

>?

94

^

126

~

31

US

63

?

95

127

DEL

NUL 空字符(Null

VT 垂直制表

SYN 空轉同步

SOH? 標題開始

FF?? 走紙控制

ETB? 信息組傳送結束

STX? 正文開始

CR?? 回車

CAN? 作廢

ETX? 正文結束

SO?? 移位輸出

EM?? 紙盡

EOY? 傳輸結束

SI??? 移位輸入

SUB? 換置

ENQ? 詢問字符

DLE? 空格

ESC? 換碼

ACK? 承認

DC1? 設備控制1

FS?? 文字分隔符

BEL? 報警

DC2? 設備控制2

GS?? 組分隔符

BS?? 退一格

DC3? 設備控制3

RS?? 記錄分隔符

HT?? 橫向列表

DC4? 設備控制4

US?? 單元分隔符

LF?? 換行

NAK? 否定

DEL? 刪除

英語用128個符號編碼 就夠了,但是用來表示其他語言,128個符號是不夠的。比如,在法語中,字母上方有注音符號,它就無法用ASCII碼表示。于是,一些歐洲國家就決定,利 用字節中閑置的最高位編入新的符號。比如,法語中的é的編碼為130(二進制10000010)。這樣一來,這些歐洲國家使用的編碼體系,可以表示最多 256個符號。

但是,這里又出現了新的 問題。不同的國家有不同的字母,因此,哪怕它們都使用256個符號的編碼方式,代表的字母卻不一樣。比如,130在法語編碼中代表了é,在希伯來語編碼中 卻代表了字母Gimel (?),在俄語編碼中又會 代表另一個符號。但是不管怎樣,所有這些編碼方式中,0—127表示的符號是一樣的,不一樣的只是128—255的這一段,所以出現后面的統一編碼方式。

注:

若想得到更詳細的參見 http://ascii.911cha.com/

2、各地的方言

在中國,大陸最常用的就 是GBK18030編碼,除此之外還有GBK,GB2312,這幾個編碼的關系是這樣的。

字符必須編碼后才能被計 算機處理。計算機使用的缺省編碼方式就是計算機的內碼。早期的計算機使用7位的ASCII編碼,但為了處理漢字,又設計出用于簡體中文的GB2312和用 于繁體中文的big5。

GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個 其它符號。漢字區的內碼范圍高字節從B0-F7,低字節從A1-FE,占用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

GB2312支持的漢字太少。1995年的漢字擴展規范GBK1.0收錄了 21886個符號,它分為漢字區和圖形符號區。漢字區包括21003個字符。

從ASCII、 GB2312到GBK,這些編碼方法是向下兼容的,即同一個字符在這些方案中總是有相同的編碼,后面的標準支持更多的字符。在這些編碼中,英文和中文可以 統一地處理。區分中文編碼的方法是高字節的最高位不為0。按照程序員的稱呼,GB2312、GBK都屬于雙字節字符集 (DBCS)。

2000年的GB18030是取代GBK1.0的正式國家標準。該標準 收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。從漢字字匯上說,GB18030在GB13000.1的20902個漢 字的基礎上增加了CJK擴展A的6582個漢字(Unicode碼0x3400-0x4db5),一共收錄了27484個漢字。

CJK就是中日韓的意思。Unicode為了節省碼位,將中日韓三國 語言中的文字統一編碼。GB13000.1就是ISO/IEC 10646-1的中文版,相當于Unicode 1.1。

GB18030的編碼采用單字節、雙字節和4字節方案。其中單字節、雙字節和 GBK是完全兼容的。4字節編碼的碼位就是收錄了CJK擴展A的6582個漢字。例如:UCS的0x3400在GB18030中的編碼應該是 8139EF30,UCS的0x3401在GB18030中的編碼應該是8139EF31。

微軟提供了 GB18030的升級包,但這個升級包只是提供了一套支持CJK擴展A的6582個漢字的新字體:新宋體-18030,并不改變內碼。Windows 的內碼仍然是GBK。

也就是 說Big5支持繁體中文,GB2312支持簡體中文,Big5,GB2312是GBK的子集,GBK是GB18030的子集

日本:SJIS編碼

注:

漢字編碼簡明對照表 http://www.knowsky.com/resource/gb2312tbm.htm

3、Unicode

如果把各種文字編碼形容 為各地的方言,那么Unicode就是世界各國合作開發的一種語言。

在這種語言環境下,不會 再有語言的編碼沖突,在同屏下,可以顯示任何語言的內容,這就是Unicode的最大好處。

那么Unicode是如 何編碼的呢?其實非常簡單。

就是將世界上所有的文字 用2個字節統一進行編碼。可能你會問,2個字節最多能夠表示65536個編碼,夠用嗎?

Unicode的學名是"Universal Multiple-Octet Coded Character Set",簡稱為UCS。現在用的是UCS-2,即2個字節編碼.

以現在的發展肯定是不夠 用得,如《康熙字典》收錄了四萬七千零三十五字,《漢語大字典》收錄了五萬六千多個。到目前為止,國際標準組織(ISO)制定國際標準時,共收集到漢字七 萬多字,所以出現UCS-4, 即4個字節編碼,由原先的65536個編碼擴展至將近100萬編碼。

注:

中日韓漢字 Unicode編碼表:http://www.chi2ko.com/tool/CJK.htm

查詢需要Unicode 編碼的字符:

http://www.unicode.org/charts/unihan.html

http://www.nengcha.com/code/unicode/

4、兼容codepage

那么既然統一了編碼,如 何兼容原先各國的文字編碼呢?這個時候就需要codepage了。

什么是codepage?codepage 就是各國的文字編碼和Unicode之間的映射表。比如簡體中文和Unicode的映射表就是CP936,點這里查看官方的映射表。

以下是幾個常用的codepage,相應的修改上面的地址的數字即可。

codepage=936 簡體中文GBK

codepage=950 繁體中文BIG5

codepage=437 美國/加拿大英語

codepage=932 日文

codepage=949 韓文

codepage=866 俄文

codepage=65001 unicode UFT-8

從936中隨意取一行, 例如:0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH.前面的編碼是GBK的編碼,后面的是Unicode。通過查這張表,就能簡單的實現GBK和Unicode之間的轉換

5、UTF-8

現在明白了 Unicode,那么UTF-8又是什么呢?又為什么會出現UTF-8呢?

Unicode的最初目標,是用1個16位的編碼來為超過65000字符提供 映射。但這還不夠,它不能覆蓋全部歷史上的文字,也不能解決傳輸的問題,尤其在那些基于網絡的應用中。?

?因此,Unicode用一些基本的保留字符制定了三套編碼方 式。它們分別是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF-8中,字符是以8位序列來編碼的,用一個或幾個字節來表示一個字符。這 種方式的最大好處,是UTF-8保留了ASCII字符的編碼做為它的一部分,例如,在UTF-8和ASCII中,“A”的編碼都是0x41.?

例:11100100 10111101 10100000à0xE4BDA0 “你”字的UTF-8編碼

01001111 01100000????????à0x4F60??“你”的Unicode編碼

按照UTF-8的編碼規 則,11100100 10111101 10100000分解如下:xxxx0100 xx111101 xx100000,把除了x之外的數字拼接在一起,01001111 01100000就變成“你”的Unicode編碼了.注意UTF-8的最前面3個1,表示整個UTF-8串是由3個字節構成的經過UTF-8編碼之后, 再也不會出現敏感字符了,因為最高位始終為1。

Unicode和UTF-8之間的轉換關系表:

0000 0000-0000 007F | 0xxxxxxx

0000 0000-0080 07FF | 110xxxxx 10xxxxxx

0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx???

0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Unicode編碼轉換到UTF-8,簡單的把Unicode字節流套到x中 就變成UTF-8了。

轉載于:https://www.cnblogs.com/bestdqf/archive/2010/06/26/1765767.html

總結

以上是生活随笔為你收集整理的ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。