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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络标准之:IANA定义的传输编码

發(fā)布時間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络标准之:IANA定义的传输编码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • IANA的傳輸編碼方式
    • 7bit
    • 8bit
    • binary
    • quoted-printable
    • base64
  • 總結(jié)

簡介

不同的系統(tǒng)或者協(xié)議可以接受的數(shù)據(jù)類型是不同的,如果要在那些不支持現(xiàn)有數(shù)據(jù)格式的系統(tǒng)或者協(xié)議中進行數(shù)據(jù)傳輸?shù)脑?#xff0c;就需要進行數(shù)據(jù)轉(zhuǎn)換。

IANA的全稱是The Internet Assigned Numbers Authority,也叫做互聯(lián)網(wǎng)數(shù)字分配機構(gòu),是一個負(fù)責(zé)協(xié)調(diào)互聯(lián)網(wǎng)的事務(wù)讓Internet正常運作的機構(gòu)。它定義了幾個transfer encodings方式。

今天將會給大家詳細(xì)講解這幾種方式的由來和使用場景。

IANA的傳輸編碼方式

根據(jù)IANA的定義,有下面幾個transfer encodings方式:

NameReference
7bit[RFC2045]
8bit[RFC2045]
binary[RFC2045]
quoted-printable[RFC2045]
base64[RFC2045]

這些傳輸編碼方式都是什么意思呢?接下來一一講述。

7bit

我們知道計算機的第一個字符編碼就是ASCII編碼,它表示的范圍是從0到127。一個字節(jié)是8位,0到127意味著ASCII編碼只使用7bits,這也就是7bit的由來。

對于有些協(xié)議或者系統(tǒng)來說,他們只支持ASCII編碼,如果傳輸?shù)臄?shù)據(jù)范圍超過了7bit,則會出現(xiàn)異常。

8bit

7bit在使用中有很大的限制,因為對于常用的Unicode編碼來說,通常會使用2-4個字節(jié)作為信息的載體,如果是7bit的話,就會導(dǎo)致信息接收的不完整,從而失去數(shù)據(jù)原有的意義。

8bit的意思是,可以接收整個8bit的數(shù)據(jù),也就是說數(shù)據(jù)可以按整個字節(jié)來傳輸。這樣就沒有傳輸?shù)南拗屏恕K哉f8bit的應(yīng)用會更加廣泛,如果一個系統(tǒng)可以正確的接收8bit,那么我們可以稱這個系統(tǒng)為8-bit clean 。

binary

是不是8bit就可以適用于所有的系統(tǒng)呢?我們要知道,8bit是按字節(jié)來進行傳輸?shù)摹K詫τ诟袷礁泳o湊的二進制流的話是不適用的。所以有一個專門的二進制消息格式binary來處理二進制信息。

quoted-printable

如果數(shù)據(jù)是binary格式的,但是系統(tǒng)又不支持binary格式該怎么辦呢?

這時候我們就需要將binary轉(zhuǎn)換成為text格式,這種轉(zhuǎn)換叫做Binary-to-text encoding。其中quoted-printable和base64就是兩種轉(zhuǎn)換方式。

對于quoted-printable來說,就是將一個8-bit數(shù)據(jù)用7bit可讀的字符來表示。雖然7bit可以表示0-127的范圍,但是其中只有33 到 126是可讀字符,其他的都不是可讀字符。

那么quoted-printable是怎么轉(zhuǎn)換的呢?

quoted-printable中,任何 8 位字節(jié)值都可以用 3 個字符來進行編碼。=后面接兩個16進制的數(shù)字。

比如對于ASCII的換頁符12來說,轉(zhuǎn)換過來就是=0C。 因為=是特殊的字符,所以等號也需要轉(zhuǎn)義成=3D來表示。

對于可打印的ASCII字符,也就是33到126之間的十進制值,則不需要轉(zhuǎn)義,直接表示他們自己即可。

ASCII 制表符和空格字符、十進制值9和32可以由它們自己表示,除非這些字符出現(xiàn)在編碼行的末尾。在這種情況下,它們需要轉(zhuǎn)義為=09(制表符)或 =20(空格),或者后跟 =(軟換行符)作為編碼行的最后一個字符。

另外Quoted-Printable 編碼數(shù)據(jù)的一行不得超過76個字符。如果超出的話,可以根據(jù)需要添加軟換行符。軟換行符是由在編碼行末尾添加=組成,軟換行符不會在解碼文本中顯示為換行符。

base64

除了quoted-printable之外,還有一種常用的Binary-to-text encoding方式,叫做base64。

base64的原理是通過一個映射表,將二進制編碼映射成為64個字符(26個小寫字母+26個大寫字母+10個數(shù)字+加號和斜杠)。

每個Base64字符可以表示6bits的數(shù)據(jù),所以3個字節(jié)的數(shù)據(jù)可以用6個Base64字符來表示。

其映射表如下:

總結(jié)

以上就是IANA介紹的幾種傳輸編碼格式,大家學(xué)會了嗎?

本文已收錄于 http://www.flydean.com/13-transfer-encodings/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!

歡迎關(guān)注我的公眾號:「程序那些事」,懂技術(shù),更懂你!

總結(jié)

以上是生活随笔為你收集整理的网络标准之:IANA定义的传输编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。