在Base64字符串每76个字符后插入换行符

10 投票
5 回答
13687 浏览
提问于 2025-04-15 22:56

我正在尝试把位图图片转换成一个base64字符串,然后再把它作为二进制数据插入到数据库里。这个base64字符串需要按照特定的方式编码,也就是说每76个字符后面要加一个换行符。用Python有什么好的方法可以做到这一点呢?

5 个回答

3

如果你想要换行的话,不要使用普通的base64包,应该用邮件里提供的那个:

import email
print email.base64MIME.encode(your_string)

这个会把编码后的字符串每76个字符分成一段

12

对于Python 3版本:

import base64
base64.encodebytes(s)

https://docs.python.org/3/library/base64.html#base64.encodebytes

这个功能可以把像字节一样的对象s进行编码,这个对象可以包含任何二进制数据。它会返回一个包含经过base64编码的数据的字节流,每76个字节后会插入一个换行符(b'\n'),并确保最后有一个换行符,这符合RFC 2045(MIME)标准。

示例:

>>> print(base64.encodebytes(b'a' * 100).decode())
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==

>>> 

对于Python 2版本:

import base64
base64.encodestring(s)

http://docs.python.org/library/base64.html

这个功能可以把字符串s进行编码,这个字符串可以包含任何二进制数据。它会返回一个包含一个或多行base64编码数据的字符串。encodestring()函数返回的字符串总是会包含一个额外的换行符('\n')。

虽然版本2的文档写得不够清晰,但它能满足你的需求。

示例:

>>> print base64.encodestring('a'*100)
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==

>>> 
9
'\n'.join(s[pos:pos+76] for pos in xrange(0, len(s), 76))

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答