字符編碼(英文名:Character encoding)也稱字集碼,是把字符集中的字符編碼為指定集合中某一對(duì)象(例如,比特模式、自然數(shù)序列、8位組或者電脈沖),以便文本在計(jì)算機(jī)中存儲(chǔ)和通過(guò)通信網(wǎng)絡(luò)的傳遞。常見(jiàn)的例子包括將拉丁字母表編碼成摩斯電碼和ASCII。其中,?ASCII將字母、數(shù)字和其他符號(hào)編號(hào),并用7比特的二進(jìn)制來(lái)表示這個(gè)整數(shù)。通常會(huì)額外使用一個(gè)擴(kuò)充的比特,以便于以1個(gè)字節(jié)的方式存儲(chǔ)。
使用最廣泛的西文字符集及其編碼是ASCII 字符集和ASCII碼(ASCII是American Standard Code for Information Interchange的縮寫),它同時(shí)也被國(guó)際標(biāo)準(zhǔn)化組織(InternationalOrganization for Standardization, ISO )批準(zhǔn)為國(guó)際標(biāo)準(zhǔn)。ASCII 碼于 1961 年提出,用于在不同計(jì)算機(jī)硬件和軟件系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)傳輸標(biāo)準(zhǔn)化,在大多數(shù)的小型機(jī)和全部的personal computer都使用此碼。ASCII碼劃分為兩個(gè)集合:128個(gè)字符的標(biāo)準(zhǔn)ASCII碼和附加的128個(gè)字符的擴(kuò)充和ASCII碼。比較EBCDIC。其中95個(gè)字符可以顯示。另外33個(gè)不可以顯示。標(biāo)準(zhǔn)ASCII碼為7位,擴(kuò)充為8位。
ASCII
美國(guó)(國(guó)家)信息交換標(biāo)準(zhǔn)(代)碼,一種使用7個(gè)或8個(gè)二進(jìn)制位進(jìn)行編碼的方案,最多可以給256個(gè)字符 (包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、控制字符及其他符號(hào))分配(或指定)數(shù)值。
ASCII碼于1961年提出,用于在不同計(jì)算機(jī)硬件和軟件系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)傳輸標(biāo)準(zhǔn)化,在大多數(shù)的小型機(jī)和全部的personal computer都使用此碼。ASCII碼劃分為兩個(gè)集合:128個(gè)字符的標(biāo)準(zhǔn)ASCII碼和附加的128個(gè)字符的擴(kuò)充和ASCII碼。比較EBCDIC。其中95個(gè)字符可以顯示。另外33個(gè)不可以顯示。標(biāo)準(zhǔn)ASCII碼為7位,擴(kuò)充為8位。
目前使用最廣泛的西文字符集及其編碼是 ASCII 字符集和 ASCII 碼( ASCII 是 American Standard Code for Information Interchange 的縮寫),它同時(shí)也被國(guó)際標(biāo)準(zhǔn)化組織( International Organization for Standardization, ISO )批準(zhǔn)為國(guó)際標(biāo)準(zhǔn)。
基本的 ASCII 字符集共有 128 個(gè)字符,其中有 96 個(gè)可打印字符,包括常用的字母、數(shù)字、標(biāo)點(diǎn)符號(hào)等,另外還有 32 個(gè)控制字符。標(biāo)準(zhǔn) ASCII 碼使用 7 個(gè)二進(jìn)位對(duì)字符進(jìn)行編碼,對(duì)應(yīng)的 ISO 標(biāo)準(zhǔn)為 ISO646 標(biāo)準(zhǔn)。下表展示了基本 ASCII 字符集及其編碼:
字母和數(shù)字的 ASCII 碼的記憶是非常簡(jiǎn)單的。我們只要記住了一個(gè)字母或數(shù)字的 ASCII 碼(例如記住 A 為 65 , 0 的 ASCII 碼為 48 ),知道相應(yīng)的大小寫字母之間差 32 ,就可以推算出其余字母、數(shù)字的 ASCII 碼。
雖然標(biāo)準(zhǔn) ASCII 碼是 7 位編碼,但由于計(jì)算機(jī)基本處理單位為字節(jié)( 1byte = 8bit ),所以一般仍以一個(gè)字節(jié)來(lái)存放一個(gè) ASCII 字符。每一個(gè)字節(jié)中多余出來(lái)的一位(最高位)在計(jì)算機(jī)內(nèi)部通常保持為 0 (在數(shù)據(jù)傳輸時(shí)可用作奇偶校驗(yàn)位)。
由于標(biāo)準(zhǔn) ASCII 字符集字符數(shù)目有限,在實(shí)際應(yīng)用中往往無(wú)法滿足要求。為此,國(guó)際標(biāo)準(zhǔn)化組織又制定了 ISO2022 標(biāo)準(zhǔn),它規(guī)定了在保持與 ISO646 兼容的前提下將 ASCII 字符集擴(kuò)充為 8 位代碼的統(tǒng)一方法。 ISO 陸續(xù)制定了一批適用于不同地區(qū)的擴(kuò)充 ASCII 字符集,每種擴(kuò)充 ASCII 字符集分別可以擴(kuò)充 128 個(gè)字符,這些擴(kuò)充字符的編碼均為高位為 1 的 8 位代碼(即十進(jìn)制數(shù) 128~255 ),稱為擴(kuò)展 ASCII 碼。
通過(guò)了解字符的存儲(chǔ)編碼,可以解決很多由編碼不匹配引起的問(wèn)題,比如網(wǎng)頁(yè)亂碼、郵件亂碼,本文簡(jiǎn)單扼要地闡明了ASCII編碼、EBCDIC編碼、GB2312編碼、UTF-8編碼、以及Base64編碼。
編碼
在顯示器上看見(jiàn)的文字、圖片等信息在電腦里面 其實(shí)并不是我們看見(jiàn)的樣子,即使你知道所有信息都存儲(chǔ)在HDD里,把它拆開(kāi)也看不見(jiàn)里面有任何東西,只有些盤片。假設(shè),你用顯微鏡把盤片放大,會(huì)看見(jiàn)盤片表面凹凸不平,凸起的地方被磁化,凹的地方是沒(méi)有被磁化;凸起的地方代表數(shù)字1,凹的地方代表數(shù)字0。硬盤只能用0和1來(lái)表示所有文字、圖片等信息。那么字母”A”在硬盤上是如何存儲(chǔ)的呢?可能小張計(jì)算機(jī)存儲(chǔ)字母”A”是1100001,而小王存儲(chǔ)字母”A”是11000010,這樣雙方交換信息時(shí)就會(huì)誤解。比如小張把1100001發(fā)送給小王,小王并不認(rèn)為1100001是字母”A”,可能認(rèn)為這是字母”X”,于是小王在用記事本訪問(wèn)存儲(chǔ)在HDD上的1100001時(shí),在屏幕上顯示的就是字母”X”。也就是說(shuō),小張和小王使用了不同的編碼表。小張用的編碼表是ASCII,ASCII編碼表把26個(gè)字母都一一的對(duì)應(yīng)到2進(jìn)制1和0上;小王用的編碼表可能是EBCDIC,只不過(guò)EBCDIC編碼與ASCII編碼中的字母和01的對(duì)應(yīng)關(guān)系不同。一般地說(shuō),開(kāi)放的操作系統(tǒng)(Linux 、Windows等)采用ASCII 編碼,而大型主機(jī)系統(tǒng)(MVS 、OS/390等)采用EBCDIC 編碼。在發(fā)送數(shù)據(jù)給對(duì)方前,需要事先告知對(duì)方自己所使用的編碼,或者通過(guò)轉(zhuǎn)碼,使不同編碼方案的兩個(gè)系統(tǒng)可溝通自如。
ASCII碼使用7位2進(jìn)制數(shù)表示一個(gè)字符,7位2進(jìn)制數(shù)可以表示出2的7次方個(gè)字符,共128個(gè)字符。EBCDIC碼使用8位,可以表示出2的8次方個(gè)字符,256個(gè)字符。
無(wú)論是ASCII碼還是EBCDIC碼,都無(wú)法對(duì)擁有幾萬(wàn)個(gè)的漢字進(jìn)行編碼。因?yàn)樯厦嬉呀?jīng)提過(guò),7位2進(jìn)制數(shù)最多對(duì)應(yīng)上128個(gè)字符,8位最多對(duì)應(yīng)上256個(gè)字符。
0~31及127(共33個(gè))是控制字符或通信專用字符(其余為可顯示字符),如控制符:LF(換行)、CR(回車)、FF(換頁(yè))、DEL(刪除)、BS(退格)、BEL(振鈴)等;通信專用字符:SOH(文頭)、EOT(文尾)、ACK(確認(rèn))等;ASCII值為8、9、10和13分別轉(zhuǎn)換為退格、制表、換行和回車字符。它們并沒(méi)有特定的圖形顯示,但會(huì)依不同的應(yīng)用程序而對(duì)文本顯示有不同的影響。
32~126(共95個(gè))是字符(32sp是空格),其中48~57為0到9十個(gè)阿拉伯?dāng)?shù)字,65~90為26個(gè)大寫英文字母,97~122為26個(gè)小寫字母,其余為一些標(biāo)點(diǎn)符號(hào)、運(yùn)算符號(hào)等。
MBCS
為了擴(kuò)充ASCII編碼,以用于顯示本國(guó)的語(yǔ)言,不同的國(guó)家和地區(qū)制定了不同的標(biāo)準(zhǔn),由此產(chǎn)生了 GB2312, BIG5, JIS 等各自的編碼標(biāo)準(zhǔn)。這些使用 2 個(gè)字節(jié)來(lái)代表一個(gè)字符的各種漢字延伸編碼方式,稱為 ANSI 編碼,又稱為"MBCS(Muilti-Bytes Charecter Set,多字節(jié)字符集)"。在簡(jiǎn)體中文系統(tǒng)下,ANSI 編碼代表 GB2312 編碼,在日語(yǔ)操作系統(tǒng)下,ANSI 編碼代表 JIS 編碼,所以在中文 windows下要轉(zhuǎn)碼成gb2312,gbk只需要把文本保存為ANSI 編碼即可。不同 ANSI 編碼之間互不兼容,當(dāng)信息在國(guó)際間交流時(shí),無(wú)法將屬于兩種語(yǔ)言的文字,存儲(chǔ)在同一段 ANSI 編碼的文本中。一個(gè)很大的缺點(diǎn)是,同一個(gè)編碼值,在不同的編碼體系里代表著不同的字。這樣就容易造成混亂。導(dǎo)致了unicode碼的誕生。
其中每個(gè)語(yǔ)言下的ANSI編碼,都有一套一對(duì)一的編碼轉(zhuǎn)換器,Unicode變成所有編碼轉(zhuǎn)換的中間介質(zhì)。所有的編碼都有一個(gè)轉(zhuǎn)換器可以轉(zhuǎn)換到Unicode,而Unicode也可以轉(zhuǎn)換到其他所有的編碼。
GB2312
GB2312 也是ANSI編碼里的一種,對(duì)ANSI編碼最初始的ASCII編碼進(jìn)行擴(kuò)充,為了滿足國(guó)內(nèi)在計(jì)算機(jī)中使用漢字的需要,中國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布了一系列的漢字字符集國(guó)家標(biāo)準(zhǔn)編碼,統(tǒng)稱為GB碼,或國(guó)標(biāo)碼。其中最有影響的是于1980年發(fā)布的《信息交換用漢字編碼字符集 基本集》,標(biāo)準(zhǔn)號(hào)為GB 2312-1980,因其使用非常普遍,也常被通稱為國(guó)標(biāo)碼。GB2312編碼通行于我國(guó)內(nèi)地;新加坡市等地也采用此編碼。幾乎所有的中文系統(tǒng)和國(guó)際化的軟件都支持GB 2312。
GB 2312是一個(gè)簡(jiǎn)體中文字符集,由6763個(gè)常用漢字和682個(gè)全角的非漢字字符組成。其中漢字根據(jù)使用的頻率分為兩級(jí)。一級(jí)漢字3755個(gè),二級(jí)漢字3008個(gè)。由于字符數(shù)量比較大,GB2312采用了二維矩陣編碼法對(duì)所有字符進(jìn)行編碼。首先構(gòu)造一個(gè)94行94列的方陣,對(duì)每一行稱為一個(gè)“區(qū)”,每一列稱為一個(gè)“位”,然后將所有字符依照下表的規(guī)律填寫到方陣中。這樣所有的字符在方陣中都有一個(gè)唯一的位置,這個(gè)位置可以用區(qū)號(hào)、位號(hào)合成表示,稱為字符的區(qū)位碼。如第一個(gè)漢字“啊”出現(xiàn)在第16區(qū)的第1位上,其區(qū)位碼為1601。因?yàn)閰^(qū)位碼同字符的位置是完全對(duì)應(yīng)的,因此區(qū)位碼同字符之間也是一一對(duì)應(yīng)的。這樣所有的字符都可通過(guò)其區(qū)位碼轉(zhuǎn)換為數(shù)字編碼信息。GB2312字符的排列分布情況見(jiàn)表1-4。
表1-4 GB2312 字符編碼分布表
GB2312字符在計(jì)算機(jī)中存儲(chǔ)是以其區(qū)位碼為基礎(chǔ)的,其中漢字的區(qū)碼和位碼分別占一個(gè)存儲(chǔ)單元,每個(gè)漢字占兩個(gè)存儲(chǔ)單元。由于區(qū)碼和位碼的取值范圍都是在1-94之間,這樣的范圍同西文的存儲(chǔ)表示沖突。例如漢字‘珀’在GB2312中的區(qū)位碼為7174,其兩字節(jié)表示形式為71,74;而兩個(gè)西文字符‘GJ’的存儲(chǔ)碼也是71,74。這種沖突將導(dǎo)致在解釋編碼時(shí)到底表示的是一個(gè)漢字還是兩個(gè)西文字符將無(wú)法判斷。
為避免同西文的存儲(chǔ)發(fā)生沖突,GB2312字符在進(jìn)行存儲(chǔ)時(shí),通過(guò)將原來(lái)的每個(gè)字節(jié)第8bit設(shè)置為1同西文加以區(qū)別,如果第8bit為0,則表示西文字符,否則表示GB2312中的字符。實(shí)際存儲(chǔ)時(shí),采用了將區(qū)位碼的每個(gè)字節(jié)分別加上A0H(160)的方法轉(zhuǎn)換為存儲(chǔ)碼,計(jì)算機(jī)存儲(chǔ)規(guī)則是此編碼的補(bǔ)碼,而且是位碼在前,區(qū)碼在后。例如漢字‘啊’的區(qū)位碼為1601,其存儲(chǔ)碼為B0A1H,其轉(zhuǎn)換過(guò)程為:
GB2312編碼用兩個(gè)字節(jié)(8位2進(jìn)制)表示一個(gè)漢字,所以理論上最多可以表示256×256=65536個(gè)漢字。但這種編碼方式也僅僅在中國(guó)行得通,如果您的網(wǎng)頁(yè)使用的GB2312編碼,那么很多外國(guó)人在瀏覽你的網(wǎng)頁(yè)時(shí)就可能無(wú)法正常顯示,因?yàn)槠錇g覽器不支持GB2312編碼。當(dāng)然,中國(guó)人在瀏覽外國(guó)網(wǎng)頁(yè)(比如日語(yǔ))時(shí),也會(huì)出現(xiàn)亂碼或無(wú)法打開(kāi)的情況,因?yàn)槲覀兊臑g覽器沒(méi)有安裝日文的編碼表。
GBK
GBK即漢字內(nèi)碼擴(kuò)展規(guī)范,K為擴(kuò)展的漢語(yǔ)拼音中“擴(kuò)”字的聲母。英文全稱漢語(yǔ)詞類 Internal Code Specification。GBK編碼標(biāo)準(zhǔn)兼容GB2312,共收錄漢字21003個(gè)、符號(hào)883個(gè),并提供1894個(gè)造字碼位,簡(jiǎn)、繁體字融于一庫(kù)。GB2312碼是中華人民共和國(guó)國(guó)家漢字信息交換用編碼,視訊中國(guó)《信息交換用漢字編碼字符集——基本集》,1980年由國(guó)家標(biāo)準(zhǔn)總局發(fā)布。基本集共收入漢字6763個(gè)和非漢字圖形字符682個(gè),通行于中國(guó)大陸。新加坡市等地也使用此編碼。GBK是對(duì)GB2312-80的擴(kuò)展,也就是CP936字碼表 (Code Page 936)的擴(kuò)展(之前CP936和GB 2312-80一模一樣)。
基本簡(jiǎn)介
GB 2312的出現(xiàn),基本滿足了漢字的計(jì)算機(jī)處理需要,但對(duì)于人名、古漢語(yǔ)等方面出現(xiàn)的罕用字,GB 2312不能處理,這導(dǎo)致了后來(lái)GBK及GB 18030漢字字符集的出現(xiàn)。
GBK采用雙字節(jié)表示,總體編碼范圍為8140-FEFE,首字節(jié)在81-FE 之間,尾字節(jié)在40-FE 之間,剔除 xx7F一條線。總計(jì)23940 個(gè)碼位,共收入21886個(gè)漢字和圖形符號(hào),其中漢字(包括部首和構(gòu)件)21003 個(gè),圖形符號(hào)883 個(gè)。P-Windows3.2和蘋果OS以GB2312為基本漢字編碼, Windows 95/98則以GBK為基本漢字編碼。
有些漢字用五筆和拼音都打不出來(lái),如:(五筆IDWI),須調(diào)出GBK字符集才能打出這個(gè)字。極品五筆中可右擊輸入法圖標(biāo),設(shè)置,屬性中選GBK字符集。極點(diǎn)五筆中可點(diǎn)擊工具條中相關(guān)圖標(biāo)進(jìn)行轉(zhuǎn)換。
計(jì)算公式
GBK碼對(duì)字庫(kù)中偏移量的計(jì)算公式為:
[(GBKH-0x81)*0xBE+(GBKL-0x41)]*(漢字離散后每個(gè)漢字點(diǎn)陣所占用的字節(jié))
編碼方式
字符有一字節(jié)和雙字節(jié)編碼,00–7F范圍內(nèi)是一位,和ASCII保持一致,此范圍內(nèi)嚴(yán)格上說(shuō)有96個(gè)字符和32個(gè)控制符號(hào)。
之后的雙字節(jié)中,前一字節(jié)是雙字節(jié)的第一位。總體上說(shuō)第一字節(jié)的范圍是81–FE(也就是不含80和FF),第二字節(jié)的一部分領(lǐng)域在40–7E,其他領(lǐng)域在80–FE。
Big5
在臺(tái)灣、香港特別行政區(qū)與澳門地區(qū),使用的是繁體中文字符集。而1980年發(fā)布的GB2312面向簡(jiǎn)體中文字符集,并不支持繁體漢字。在這些使用繁體中文字符集的地區(qū),一度出現(xiàn)過(guò)很多不同廠商提出的字符集編碼,這些編碼彼此互不兼容,造成了信息交流的困難。為統(tǒng)一繁體字符集編碼,1984年,臺(tái)灣五大廠商宏碁、神通、佳佳、零壹以及大眾一同制定了一種繁體中文編碼方案,因其來(lái)源被稱為大五碼,英文寫作Big5,后來(lái)按英文翻譯回漢字后,普遍被稱為大五碼。
大五碼是一種繁體中文漢字字符集,其中繁體漢字13053個(gè),808個(gè)標(biāo)點(diǎn)符號(hào)、希臘字母及特殊符號(hào)。大五碼的編碼碼表直接針對(duì)存儲(chǔ)而設(shè)計(jì),每個(gè)字符統(tǒng)一使用兩個(gè)字節(jié)存儲(chǔ)表示。第1字節(jié)范圍81H-FEH,避開(kāi)了同ASCII碼的沖突,第2字節(jié)范圍是40H-7EH和A1H-FEH。因?yàn)锽ig5的字符編碼范圍同GB2312字符的存儲(chǔ)碼范圍存在沖突,所以在同一正文不能對(duì)兩種字符集的字符同時(shí)支持。
Big5編碼的分布如表1-5所示,Big5字符主要部分集中在三個(gè)段內(nèi):標(biāo)點(diǎn)符號(hào)、希臘字母及特殊符號(hào);常用漢字;非常用漢字。其余部分保留給其他廠商支持。
表1-5 Big5字符編碼分布表
Big5編碼推出后,得到了繁體中文軟件廠商的廣泛支持,在使用繁體漢字的地區(qū)迅速普及使用。目前,Big5編碼在臺(tái)灣、香港特別行政區(qū)、澳門及其他海外華人中普遍使用,成為了繁體中文編碼的事實(shí)標(biāo)準(zhǔn)。在互聯(lián)網(wǎng)中檢索繁體中文網(wǎng)站,所打開(kāi)的網(wǎng)頁(yè)中,大多都是通過(guò)Big5編碼產(chǎn)生的文檔。
Unicode
如上ANSI編碼條例中所述,世界上存在著多種編碼 方式,在ANSi編碼下,同一個(gè)編碼值,在不同的編碼體系里代表著不同的字。可能最終顯示的是中文,也可能顯示的是日語(yǔ)。在ANSI編碼體系下,要想打開(kāi)一個(gè)文本文件,不但要知道它的編碼方式,還要安裝有對(duì)應(yīng)編碼表,否則就可能無(wú)法讀取或出現(xiàn)亂碼。為什么電子郵件和網(wǎng)頁(yè)都經(jīng)常會(huì)出現(xiàn)亂碼,就是因?yàn)樾畔⒌奶峁┱呖赡苁侨瘴牡腁NSI編碼體系和信息的讀取者可能是中文的編碼體系,他們對(duì)同一個(gè)二進(jìn)制編碼值進(jìn)行顯示,采用了不同的編碼,導(dǎo)致亂碼。這個(gè)問(wèn)題促使了unicode碼的誕生。
如果有一種編碼,將世界上所有的符號(hào)都納入其中,無(wú)論是英文、日語(yǔ)、還是中文等,大家都使用這個(gè)編碼表,就不會(huì)出現(xiàn)編碼不匹配現(xiàn)象。每個(gè)符號(hào)對(duì)應(yīng)一個(gè)唯一的編碼,亂碼問(wèn)題就不存在了。這就是Unicode編碼。
Unicode當(dāng)然是一個(gè)很大的集合,現(xiàn)在的規(guī)模可以容納100多萬(wàn)個(gè)符號(hào)。每個(gè)符號(hào)的編碼都不一樣,比如,U+0639表示阿拉伯字母Ain,U+0041表示英語(yǔ)的大寫字母A,“漢”這個(gè)字的Unicode編碼是U+6C49。
Unicode固然統(tǒng)一了編碼方式,但是它的效率不高,比如UCS-4(Unicode的標(biāo)準(zhǔn)之一)規(guī)定用4個(gè)字節(jié)存儲(chǔ)一個(gè)符號(hào),那么每個(gè)英文字母前都必然有三個(gè)字節(jié)是0,這對(duì)存儲(chǔ)和傳輸來(lái)說(shuō)都很耗資源。
UTF-8
為了提高Unicode的編碼率,于是就出現(xiàn)了UTF-8編碼。UTF-8可以根據(jù)不同的符號(hào)自動(dòng)選擇編碼的長(zhǎng)短。比如英文字母可以只用1個(gè)字節(jié)就夠了。
UTF-8的編碼是這樣得出來(lái)的,以”漢”這個(gè)字為例:
“漢”字的Unicode編碼是U+00006C49,然后把U+00006C49通過(guò)UTF-8主軸編碼器進(jìn)行編碼,最后輸出的UTF-8編碼是E6B189。
Base64
有的電子郵件系統(tǒng)(比如國(guó)外信箱)不支持非英文字母(比如漢字)傳輸,這是歷史原因造成的(認(rèn)為只有美國(guó)會(huì)使用電子郵件?)。因?yàn)橐粋€(gè)英文字母使用ASCII編碼來(lái)存儲(chǔ),占存儲(chǔ)器的1個(gè)字節(jié)(8位),實(shí)際上只用了7位2進(jìn)制來(lái)存儲(chǔ),第一位并沒(méi)有使用,設(shè)置為0,所以,這樣的系統(tǒng)認(rèn)為凡是第一位是1的字節(jié)都是錯(cuò)誤的。而有的編碼方案(比如GB2312)不但使用多個(gè)字節(jié)編碼一個(gè)字符,并且第一位經(jīng)常是1,于是郵件系統(tǒng)就把1換成0,這樣收到郵件的人就會(huì)發(fā)現(xiàn)郵件亂碼。
為了能讓郵件系統(tǒng)正常的收發(fā)信件,就需要把由其他編碼存儲(chǔ)的符號(hào)轉(zhuǎn)換成ASCII碼來(lái)傳輸。比如,在一端發(fā)送GB2312編碼->根據(jù)Base64規(guī)則->轉(zhuǎn)換成ASCII碼,接收端收到ASCII碼->根據(jù)Base64規(guī)則->還原到GB2312編碼。。
參考資料 >