您的位置:老铁SEO > 站长新闻 > 网站交易 >

quoted-printable,Python 简易实现 quoted-printable 编码

文章来源:http://www.6cu.com

作者:seo外链建设

人气:10

2021-03-23 04:45:41

     一、什么是 quoted-printable 编码        

     quoted-printable编码方法适用于所传送的数据中只有少量的非ASCII码,例如汉字。这种编码方法的要点就是对于可打印的ASCII码,除特殊字符等号“=”外,都不改变。等号“=”和不可打印的ASCII码以及非ASCII 码的数据的编码方法是:现将每个字节的二进制代码用两个十六进制数字表示,然后在前面加上一个等号 “=”。  

     例如,汉字的“系统”的二进制编码是:1100111 10110101 11001101 10110011(共有32位,但这四个字节都不是 ASCII码),其十六进制数字表示为:CFB5CDB3。用quoted-printable编码表示为:=CF=B5=CD=B3,这12个字符都是可打印的ASCII字符,它们的二进制编码需要96位,和原来的32位相比,开销达 200%。   

     而等号“=”的二进制代码为00111101,即十六进制的3D,因此等号“=”的quoted-printable编码为“=3D”。

二、举例说明 

     试将数据 01001100 10011101 00111001 进行quoted-printable编码,并得出最后传送的ASCII数据。这样的数据用quoted-printable编码后其编码开销有多大?

     (1)01001100 1001101 00111001 有3个字节,中间的一个高位为1,因此它不是ASCII码,需要使用quoted-printable编码。第一个和第三个字节是ASCII码,不变化。

     (2)10011101 的十六进制表示是:9D,前面再加上等号“=”,变成“=9D”。

     (3)=,9,D 的8位ASCII码分别为:

     00111101 00111001 01000100

     因此最后的结果是5 字节的数据:

     01001100 00111101 00111001 01000100 00111001。

     (4)编码开销 =5-3=2字节。原来只有3字节的数据。用百分数表示的编码开销 =?= 66.7%。

     三、具体代码 

     四、代码运行展示

     示例1:

test_string = "哔哩哔哩 (゜-゜)つロ 干杯~-bilibili"

     结果1:

可打印的ascii码( '=' 和 ' '  除外): 93

original: 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

encode: =E5=93=94=E5=93=A9=E5=93=94=E5=93=A9=20(=E3=82=9C-=E3=82=9C)=E3=81=A4=E3=83=AD=20=E5=B9=B2=E6=9D=AF~-bilibili

示例2:

    test_string = "Bilibili,哔哩哔哩,哔哩哔哩动画,哔哩哔哩弹幕网,弹幕视频,B站,弹幕,字幕,AMV,MAD,MTV,ANIME,动漫,动漫音乐,游戏,游戏解说,二次元,游戏视频,ACG,galgame,动画,番组,新番,初音,洛天依,vocaloid,日本动漫,国产动漫,手机游戏,网络游戏,电子竞技,ACG燃曲,ACG神曲,追新番,新番动漫,新番吐槽,巡音,镜音双子,千本樱,初音MIKU,舞蹈MMD,MIKUMIKUDANCE,洛天依原创曲,洛天依翻唱曲,洛天依投食歌,洛天依MMD,vocaloid家族,OST,BGM,动漫歌曲,日本动漫音乐,宫崎骏动漫音乐,动漫音乐推荐,燃系mad,治愈系mad,MAD MOVIE,MAD高燃"

     结果2:

可打印的ascii码( '=' 和 ' '  除外): 93

original: Bilibili,哔哩哔哩,哔哩哔哩动画,哔哩哔哩弹幕网,弹幕视频,B站,弹幕,字幕,AMV,MAD,MTV,ANIME,动漫,动漫音乐,游戏,游戏解说,二次元,游戏视频,ACG,galgame,动画,番组,新番,初音,洛天依,vocaloid,日本动漫,国产动漫,手机游戏,网络游戏,电子竞技,ACG燃曲,ACG神曲,追新番,新番动漫,新番吐槽,巡音,镜音双子,千本樱,初音MIKU,舞蹈MMD,MIKUMIKUDANCE,洛天依原创曲,洛天依翻唱曲,洛天依投食歌,洛天依MMD,vocaloid家族,OST,BGM,动漫歌曲,日本动漫音乐,宫崎骏动漫音乐,动漫音乐推荐,燃系mad,治愈系mad,MAD MOVIE,MAD高燃

encode:Bilibili,=E5=93=94=E5=93=A9=E5=93=94=E5=93=A9,=E5=93=94=E5=93=A9=E5=93=94=E5=93=A9=E5=8A=A8=E7=94=BB,=E5=93=94=E5=93=A9=E5=93=94=E5=93=A9=E5=BC=B9=E5=B9=95=E7=BD=91,=E5=BC=B9=E5=B9=95=E8=A7=86=E9=A2=91,B=E7=AB=99,=E5=BC=B9=E5=B9=95,=E5=AD=97=E5=B9=95,AMV,MAD,MTV,ANIME,=E5=8A=A8=E6=BC=AB,=E5=8A=A8=E6=BC=AB=E9=9F=B3=E4=B9=90,=E6=B8=B8=E6=88=8F,=E6=B8=B8=E6=88=8F=E8=A7=A3=E8=AF=B4,=E4=BA=8C=E6=AC=A1=E5=85=83,=E6=B8=B8=E6=88=8F=E8=A7=86=E9=A2=91,ACG,galgame,=E5=8A=A8=E7=94=BB,=E7=95=AA=E7=BB=84,=E6=96=B0=E7=95=AA,=E5=88=9D=E9=9F=B3,=E6=B4=9B=E5=A4=A9=E4=BE=9D,vocaloid,=E6=97=A5=E6=9C=AC=E5=8A=A8=E6=BC=AB,=E5=9B=BD=E4=BA=A7=E5=8A=A8=E6=BC=AB,=E6=89=8B=E6=9C=BA=E6=B8=B8=E6=88=8F,=E7=BD=91=E7=BB=9C=E6=B8=B8=E6=88=8F,=E7=94=B5=E5=AD=90=E7=AB=9E=E6=8A=80,ACG=E7=87=83=E6=9B=B2,ACG=E7=A5=9E=E6=9B=B2,=E8=BF=BD=E6=96=B0=E7=95=AA,=E6=96=B0=E7=95=AA=E5=8A=A8=E6=BC=AB,=E6=96=B0=E7=95=AA=E5=90=90=E6=A7=BD,=E5=B7=A1=E9=9F=B3,=E9=95=9C=E9=9F=B3=E5=8F=8C=E5=AD=90,=E5=8D=83=E6=9C=AC=E6=A8=B1,=E5=88=9D=E9=9F=B3MIKU,=E8=88=9E=E8=B9=88MMD,MIKUMIKUDANCE,=E6=B4=9B=E5=A4=A9=E4=BE=9D=E5=8E=9F=E5=88=9B=E6=9B=B2,=E6=B4=9B=E5=A4=A9=E4=BE=9D=E7=BF=BB=E5=94=B1=E6=9B=B2,=E6=B4=9B=E5=A4=A9=E4=BE=9D=E6=8A=95=E9=A3=9F=E6=AD=8C,=E6=B4=9B=E5=A4=A9=E4=BE=9DMMD,vocaloid=E5=AE=B6=E6=97=8F,OST,BGM,=E5=8A=A8=E6=BC=AB=E6=AD=8C=E6=9B=B2,=E6=97=A5=E6=9C=AC=E5=8A=A8=E6=BC=AB=E9=9F=B3=E4=B9=90,=E5=AE=AB=E5=B4=8E=E9=AA=8F=E5=8A=A8=E6=BC=AB=E9=9F=B3=E4=B9=90,=E5=8A=A8=E6=BC=AB=E9=9F=B3=E4=B9=90=E6=8E=A8=E8=8D=90,=E7=87=83=E7=B3=BBmad,=E6=B2=BB=E6=84=88=E7=B3=BBmad,MAD=20MOVIE,MAD=E9=AB=98=E7=87=83

     五、使用 quopri 库 

     代码:

import quopri

a = "哔哩哔哩 (゜-゜)つロ 干杯~-bilibili"

b = quopri.encodestring(a.encode())

c = quopri.decodestring(b)

print("raw: {}".format(a))

print("encode: {}".format(b))

print("decode: {}".format(c.decode()))

     结果:

raw: 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

encode: b'=E5=93=94=E5=93=A9=E5=93=94=E5=93=A9 (=E3=82=9C-=E3=82=9C)=E3=81=A4=E3=83=\n=AD =E5=B9=B2=E6=9D=AF~-bilibili'

decode: 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

     六、心得总结 

     简单地用 Python 实现了 quoted-printable 编码,并发现了用 quopri 库可以轻松实现其编码。

     原文链接:https://blog.csdn.net/Enderman_xiaohei/article/details/99706255


上一篇:phpmanual,php Manual右侧没有内容的解决

下一篇:没有了

相关文章

在线客服

外链咨询

扫码加我微信

微信:juxia_com

返回顶部