如何在python中将文本编码为base64

suk*_*vir 37 python base64 encoding python-3.x

我正在尝试将文本字符串编码为base64.

我试过这样做:

name = "your name"
print('encoding %s in base64 yields = %s\n'%(name,name.encode('base64','strict')))
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

LookupError: 'base64' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?(使用Python 3.4)

Ale*_*kov 67

记得导入base64,b64encode将字节作为参数.

import base64
base64.b64encode(bytes('your string', 'utf-8'))
Run Code Online (Sandbox Code Playgroud)

  • 如何在打印时删除前导b? (4认同)
  • 您需要使用某些编码将其从字节解码为字符串 - 例如ascii或utf8.(`b'home'.decode('ascii')`例如) (4认同)

Tag*_*gar 14

1)这在Python 2中没有导入的情况下工作:

>>>
>>> 'Some text'.encode('base64')
'U29tZSB0ZXh0\n'
>>>
>>> 'U29tZSB0ZXh0\n'.decode('base64')
'Some text'
>>>
>>> 'U29tZSB0ZXh0'.decode('base64')
'Some text'
>>>
Run Code Online (Sandbox Code Playgroud)

(虽然这在Python3中不起作用)

2)在Python 3中你必须导入base64并执行base64.b64decode('...') - 也可以在Python 2中工作.


mgi*_*son 12

事实证明,这对于获得自己的模块非常重要......

import base64
base64.b64encode(b'your name')  # b'eW91ciBuYW1l'
base64.b64encode('your name'.encode('ascii'))  # b'eW91ciBuYW1l'
Run Code Online (Sandbox Code Playgroud)


Ped*_*ito 9

对于py3、base64encodedecode字符串:

import base64

def b64e(s):
    return base64.b64encode(s.encode()).decode()


def b64d(s):
    return base64.b64decode(s).decode()
Run Code Online (Sandbox Code Playgroud)

  • 这就是正确答案!base64 是 **二进制到文本编码** 我不知道为什么 python 的 `base64` 模块不会自行将其转换回字符串...... (9认同)
  • 确切地。以及为什么“.b64decode”需要字符串而不是字节。为什么函数不对称? (3认同)

小智 5

看来即使在调用编码字符串之后,也必须调用该函数decode()才能使用实际的字符串数据。因为永远不要忘记,它总是返回字节文字。base64.b64decodebase64

import base64
conv_bytes = bytes('your string', 'utf-8')
print(conv_bytes)                                 # b'your string'
encoded_str = base64.b64encode(conv_bytes)
print(encoded_str)                                # b'eW91ciBzdHJpbmc='
print(base64.b64decode(encoded_str))              # b'your string'
print(base64.b64decode(encoded_str).decode())     # your string
Run Code Online (Sandbox Code Playgroud)