【发布时间】:2013-10-01 08:42:48
【问题描述】:
我正在尝试使用 Python 3.3 中的 MIMEApplication 对二进制文件进行编码,作为多部分 MIME HTTP POST 的一部分。我有一个问题,字符 0x0d 被重新解释为换行符 0xa,尽管所有内容都设置为二进制字节。
这是一个最小的测试场景,其中包含一个带有 0x0d 的二进制字符串,但会被误解:
from email.encoders import encode_noop
from email.generator import BytesGenerator
from email.mime.application import MIMEApplication
import io
app = MIMEApplication(b'Q\x0dQ', _encoder=encode_noop)
b = io.BytesIO()
g = BytesGenerator(b)
g.flatten(app)
for i in b.getvalue()[-3:]:
print("%02x " % i, end="")
print()
当它应该是51 0d 51时,输出是:51 0a 51
请注意,这是为多部分 http POST 消息生成二进制部分。
【问题讨论】:
标签: python python-3.x mime