我正在尝试将文本字符串编码为base64。
我试过这样做:
name = "your name"
print('encoding %s in base64 yields = %s\n'%(name,name.encode('base64','strict')))
但是这给了我以下错误:
LookupError: 'base64' is not a text encoding; use codecs.encode() to handle arbitrary codecs
我该怎么做呢? (使用Python 3.4)
答案 0 :(得分:57)
请记住导入base64,并且b64encode将字节作为参数。
import base64
base64.b64encode(bytes('your string', 'utf-8'))
答案 1 :(得分:13)
1)这在Python 2中没有导入的情况下工作:
>>>
>>> 'Some text'.encode('base64')
'U29tZSB0ZXh0\n'
>>>
>>> 'U29tZSB0ZXh0\n'.decode('base64')
'Some text'
>>>
>>> 'U29tZSB0ZXh0'.decode('base64')
'Some text'
>>>
(虽然这在Python3中不起作用)
2)在Python 3中,您必须导入base64并执行base64.b64decode(' ...') - 也可以在Python 2中使用。
答案 2 :(得分:10)
事实证明这很重要,可以获得it's own module ...
import base64
base64.b64encode(b'your name') # b'eW91ciBuYW1l'
base64.b64encode('your name'.encode('ascii')) # b'eW91ciBuYW1l'
答案 3 :(得分:2)
兼容py2和py3
import six
import base64
def b64encode(source):
if six.PY3:
source = source.encode('utf-8')
content = base64.b64encode(source).decode('utf-8')
答案 4 :(得分:2)
对于py3,base64 encode
和decode
字符串:
import base64
def b64e(s):
return base64.b64encode(s.encode()).decode()
def b64d(s):
return base64.b64decode(s).decode()
答案 5 :(得分:1)
您当然可以使用base64
模块,也可以使用codecs
模块(错误消息中提到)进行二进制编码(表示非标准和非文本编码) )。
例如:
import codecs
my_bytes = b"Hello World!"
codecs.encode(my_bytes, "base64")
codecs.encode(my_bytes, "hex")
codecs.encode(my_bytes, "zip")
codecs.encode(my_bytes, "bz2")
这对于大数据很有用,因为您可以将它们链接以获得压缩的和json可序列化的值:
my_large_bytes = my_bytes * 10000
codecs.decode(
codecs.encode(
codecs.encode(
my_large_bytes,
"zip"
),
"base64"),
"utf8"
)
参考:
答案 6 :(得分:0)
使用以下代码:
import base64
#Taking input through the terminal.
welcomeInput= raw_input("Enter 1 to convert String to Base64, 2 to convert Base64 to String: ")
if(int(welcomeInput)==1 or int(welcomeInput)==2):
#Code to Convert String to Base 64.
if int(welcomeInput)==1:
inputString= raw_input("Enter the String to be converted to Base64:")
base64Value = base64.b64encode(inputString.encode())
print "Base64 Value = " + base64Value
#Code to Convert Base 64 to String.
elif int(welcomeInput)==2:
inputString= raw_input("Enter the Base64 value to be converted to String:")
stringValue = base64.b64decode(inputString).decode('utf-8')
print "Base64 Value = " + stringValue
else:
print "Please enter a valid value."
答案 7 :(得分:0)
即使在对base64编码的字符串调用base64.b64decode之后,似乎也必须调用encode()函数来使用实际的字符串数据。因为永远不会忘记它总是返回字节文字。
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