Base64
-ASCII值-三個二進(jìn)制-四個二進(jìn)制-十進(jìn)制-base64表
所謂Base64,就是說選出64個字符----小寫字母a-z、大寫字母A-Z、數(shù)字0-9、符號"+"、"/"(再加上作為墊字的"=",實際上是65個字符)----作為一個基本字符集。然后,其他所有符號都轉(zhuǎn)換成這個字符集中的字符。
具體來說,轉(zhuǎn)換方式可以分為四步。
第一步,將每三個字節(jié)作為一組,一共是24個二進(jìn)制位。
第二步,將這24個二進(jìn)制位分為四組,每個組有6個二進(jìn)制位。
第三步,在每組前面加兩個00,擴(kuò)展成32個二進(jìn)制位,即四個字節(jié)。
第四步,根據(jù)下表,得到擴(kuò)展后的每個字節(jié)的對應(yīng)符號,這就是Base64的編碼值。
a)二個字節(jié)的情況:將這二個字節(jié)的一共16個二進(jìn)制位,按照上面的規(guī)則,轉(zhuǎn)成三組,最后一組除了前面加兩個0以外,后面也要加兩個0。這樣得到一個三位的Base64編碼,再在末尾補(bǔ)上一個"="號。
b)一個字節(jié)的情況:將這一個字節(jié)的8個二進(jìn)制位,按照上面的規(guī)則轉(zhuǎn)成二組,最后一組除了前面加二個0以外,后面再加4個0。這樣得到一個二位的Base64編碼,再在末尾補(bǔ)上兩個"="號。
Quoted-printable
-ASCII-二進(jìn)制-十六進(jìn)制-加=
主要用于ACSII文本中夾雜少量非ASCII碼字符的情況,不適合于轉(zhuǎn)換純二進(jìn)制文件。
它規(guī)定將每一個8位的字節(jié),轉(zhuǎn)換為3個字符。第一個字符是"="號,這是固定不變的。后面二個字符是二個十六進(jìn)制數(shù),分別代表了這個字節(jié)前四位和后四位的數(shù)值。
舉例來說,ASCII碼中"換頁鍵"(form feed)是12,二進(jìn)制形式是00001100,寫成十六進(jìn)制就是0C,因此它的編碼值為"=0C"。"="號的ASCII值是61,二進(jìn)制形式是00111101,因為它的編碼值是"=3D"。除了可打印的ASCII碼以外,所有其他字符都必須用這種方式進(jìn)行轉(zhuǎn)換。
所有可打印的ASCII碼字符(十進(jìn)制值從33到126)都保持原樣不變,"="(十進(jìn)制值61)除外。
gb2312、utf-8、gbk
GB2312、GBK和UTF-8都是一種字符編碼,除此之外,還有好多字符編碼。簡單的說一下,為什么要用編碼,在計算機(jī)內(nèi),儲存文本信息用ASCII碼,每一個字符對應(yīng)著唯一的ASCII碼。最初計算機(jī)是由美國發(fā)明的,他們也用的是鍵盤和上面的字母,所以他們的字符ASCII好解決。但是我們中國的就不同了,每個漢字要對應(yīng)唯一的ASCII碼。這樣,就出來了國家制定的字符編碼標(biāo)準(zhǔn):GB2312、GBK等。其他國家,其他語言也有他們對應(yīng)的編碼標(biāo)準(zhǔn)。 GB 就是國標(biāo)的意思,GB2312和GBK主要用于漢字的編碼,而UTF-8是全世界通用的
UTF-8:Unicode TransformationFormat-8bit,允許含BOM,但通常不含BOM。是用以解決國際上字符的一種多字節(jié)編碼,它對英文使用8位(即一個字節(jié)),中文使用24為(三個字節(jié))來編碼。UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強(qiáng)。UTF-8編碼的文字可以在各國支持UTF8字符集的瀏覽器上顯示。如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。
GBK是國家標(biāo)準(zhǔn)GB2312基礎(chǔ)擴(kuò)容后兼容GB2312的標(biāo)準(zhǔn)。GBK的文字編碼是用雙字節(jié)來表示的,即不論中、英文字符均使用雙字節(jié)來表示,為了區(qū)分中文,將其最高位都設(shè)定成1。GBK包含全部中文字符,是國家編碼,通用性比UTF8差,不過UTF8占用的數(shù)據(jù)庫比GBD大。
gb2312、gbk與utf-8都必須通過Unicode編碼才能相互轉(zhuǎn)換