文章目录

  • 简介
  • IANA的传输编码方式
    • 7bit
    • 8bit
    • binary
    • quoted-printable
    • base64
  • 总结

简介

不同的系统或者协议可以接受的数据类型是不同的,如果要在那些不支持现有数据格式的系统或者协议中进行数据传输的话,就需要进行数据转换。

IANA的全称是The Internet Assigned Numbers Authority,也叫做互联网数字分配机构,是一个负责协调互联网的事务让Internet正常运作的机构。它定义了几个transfer encodings方式。

今天将会给大家详细讲解这几种方式的由来和使用场景。

IANA的传输编码方式

根据IANA的定义,有下面几个transfer encodings方式:

Name Reference
7bit [RFC2045]
8bit [RFC2045]
binary [RFC2045]
quoted-printable [RFC2045]
base64 [RFC2045]

这些传输编码方式都是什么意思呢?接下来一一讲述。

7bit

我们知道计算机的第一个字符编码就是ASCII编码,它表示的范围是从0到127。一个字节是8位,0到127意味着ASCII编码只使用7bits,这也就是7bit的由来。

对于有些协议或者系统来说,他们只支持ASCII编码,如果传输的数据范围超过了7bit,则会出现异常。

8bit

7bit在使用中有很大的限制,因为对于常用的Unicode编码来说,通常会使用2-4个字节作为信息的载体,如果是7bit的话,就会导致信息接收的不完整,从而失去数据原有的意义。

8bit的意思是,可以接收整个8bit的数据,也就是说数据可以按整个字节来传输。这样就没有传输的限制了。所以说8bit的应用会更加广泛,如果一个系统可以正确的接收8bit,那么我们可以称这个系统为8-bit clean 。

binary

是不是8bit就可以适用于所有的系统呢?我们要知道,8bit是按字节来进行传输的。所以对于格式更加紧凑的二进制流的话是不适用的。所以有一个专门的二进制消息格式binary来处理二进制信息。

quoted-printable

如果数据是binary格式的,但是系统又不支持binary格式该怎么办呢?

这时候我们就需要将binary转换成为text格式,这种转换叫做Binary-to-text encoding。其中quoted-printable和base64就是两种转换方式。

对于quoted-printable来说,就是将一个8-bit数据用7bit可读的字符来表示。虽然7bit可以表示0-127的范围,但是其中只有33 到 126是可读字符,其他的都不是可读字符。

那么quoted-printable是怎么转换的呢?

quoted-printable中,任何 8 位字节值都可以用 3 个字符来进行编码。=后面接两个16进制的数字。

比如对于ASCII的换页符12来说,转换过来就是=0C。 因为=是特殊的字符,所以等号也需要转义成=3D来表示。

对于可打印的ASCII字符,也就是33到126之间的十进制值,则不需要转义,直接表示他们自己即可。

ASCII 制表符和空格字符、十进制值9和32可以由它们自己表示,除非这些字符出现在编码行的末尾。在这种情况下,它们需要转义为=09(制表符)或 =20(空格),或者后跟 =(软换行符)作为编码行的最后一个字符。

另外Quoted-Printable 编码数据的一行不得超过76个字符。如果超出的话,可以根据需要添加软换行符。软换行符是由在编码行末尾添加=组成,软换行符不会在解码文本中显示为换行符。

base64

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

base64的原理是通过一个映射表,将二进制编码映射成为64个字符(26个小写字母+26个大写字母+10个数字+加号和斜杠)。

每个Base64字符可以表示6bits的数据,所以3个字节的数据可以用6个Base64字符来表示。

其映射表如下:

总结

以上就是IANA介绍的几种传输编码格式,大家学会了吗?

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

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

网络标准之:IANA定义的传输编码相关推荐

  1. 网络标准之:永远是1.0版本的MIME

    文章目录 简介 MIME详解 MIME头 MIME-Version Content-Type Content-Disposition Content-Transfer-Encoding Encoded ...

  2. HTTP 传输编码增大了传输量,只为解决这一个问题 | 实用 HTTP

    承香墨影 最快捷的技术进阶之路 题图:by @Olga Hi,大家好,我是承香墨影! HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文,而报文又是由报文头(Hea ...

  3. http协议传输编码

    1.什么是传输编码? 传输编码在 HTTP 的报文头中,使用 Transfer-Encoding 首部进行标记,它就是指明当前使用的传输编码. Transfer-Encoding 会改变报文的格式和传 ...

  4. MEPG-4标准的主要技术概览及编码(转)

    MPEG-4编码标准是目前最新的国际编码标准规范?熏本文就其主要的内容作了简单的概述?熏并在此基础上,着重介绍了具有特色的音频对象的编码和视频对象的编码. 1 多媒体传输集成框架 多媒体传输集成框架( ...

  5. FlexRay车载网络标准

    FlexRay车载网络标准已经成为同类产品的基准,将在未来很多年内,引导整个汽车电子产品控制结构的发展方向.FlexRay是继CAN 和LIN之后的最新研发成果,可以有效管理多重安全和舒适功能:譬如, ...

  6. 【信管1.3】计算机网络基础(一)网络标准与协议

    计算机网络基础(一)网络标准与协议 问问你身边的运维吧,网络协议这个东西随便说说就是能写一本跟字典一样的书的.不要被吓到了,这是真事.不仅仅是运维,包括网络管理员以及我们这些 Web 开发工程师来说, ...

  7. 网络基础1--计算机网络背景-局广城网范围,还有其他各种网,交换机路由器概念,ip地址,mac端口了解,网络协议,五层模型,传输中数据封装和分用,网络字节序,主机字节序如何判断。

    ** 计算机网络背景 ** 网络发展史:一个网络由路由器星形发散 局域网 1.指覆盖范围在1000米以内的网络 2.计算机的数量较多,通过交换机和路由器连在一起,也被称为服务器. 城域网: 1.指覆盖 ...

  8. 网络标准和OSI模型(1)

    1.网络标准化组织: 所谓标准化即时文档化的协议中包含推动某一特定产品或服务应如何被设计或实施的技术规范或其他严禁标准.通过标准,不同的生产厂商可以确保产品.生产过程以及服务适合他们的目的. 由于目前 ...

  9. SQL-92标准 中文翻译——定义、记号和约定 (定义)

    3.1  定义 为了该国际标准的目的,应用以下定义. 3.1.1  摘自ISO/IEC 10646标准的定义 该国际标准使用的以下条款,摘自ISO/IEC 10646标准: a)         ch ...

最新文章

  1. 美国滴滴打人上线,约架神器如何玩转暴力社区?
  2. boost::hana::while_用法的测试程序
  3. Python3教程Web开发实战梳理-day7(看着不错)
  4. Asp.net Ajax AutoComplete 控件的用法
  5. java reflect 例子
  6. git clone github源码 下载速度很慢的解决方法
  7. listview mysql 安卓_Android——ListView与数据库的结合
  8. android.mk ndk编译选项优化,Android NDK(ARM开发)使用NEON优化 - Fla
  9. Android 饼状图(MPAndroidChart框架)
  10. plecs使用C-Script模块建立PI传递函数模型
  11. 计算机系相声剧本,大学相声剧本:两种学生
  12. 淘宝返利是怎么回事?是真的还是假的?
  13. 阻抗,特征阻抗与等效阻抗
  14. HDOJ1233 还是畅通工程(kru)
  15. 计算学习理论PAC模型
  16. Oracle GoldenGate for MySQL部署踩的坑
  17. Minecraft 1.12.2模组开发(十九) 自定义3D物品模型
  18. dreamweaver8_Dreamweaver 8符合标准!
  19. TlBCO Jaspersoft Studio 软件根据条件设置字体颜色
  20. Python 批量将.xlsx文件转为.xls文件

热门文章

  1. 视觉注意力机制(上)
  2. Virtual Box中Centos虚拟机设置静态IP
  3. 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----CC篇
  4. Win下通过 Navica t连接Ubuntu下MySQL数据库
  5. docker学习笔记(七)docker-swarm
  6. 科普扫盲,HTTP Status Code详解,从此排错无忧!
  7. Linux(CentOS)中常用软件安装,使用及异常——XManager, 中文支持,JDK
  8. Django环境搭建
  9. 实现 LRU 缓存机制
  10. 大话ion系列(三)