我正在尝试在 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 0a 51
应该是什么时候51 0d 51
请注意,这是为多部分 http POST 消息生成二进制部分。