Подтвердить что ты не робот

Как закодировать текст на base64 в python

Я пытаюсь закодировать текстовую строку на 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)

4b9b3361

Ответ 1

Не забудьте импортировать base64 и b64encode берет байты в качестве аргумента.

import base64
base64.b64encode(bytes('your string', 'utf-8'))

Ответ 2

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.

Ответ 3

Оказывается, это достаточно важно, чтобы получить собственный модуль...

import base64
base64.b64encode(b'your name')  # b'eW91ciBuYW1l'
base64.b64encode('your name'.encode('ascii'))  # b'eW91ciBuYW1l'

Ответ 4

Для совместимости с py2 и py3

import six
import base64

def b64encode(source):
    if six.PY3:
        source = source.encode('utf-8')
    content = base64.b64encode(source).decode('utf-8')

Ответ 5

Используйте приведенный ниже код:

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."

Ответ 6

Хотя вы, конечно, можете использовать модуль 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"
)

Refs: