it-swarm.com.de

So codieren Sie Text in Python in base64

Ich versuche, eine Textzeichenfolge in base64 zu kodieren.

ich habe es versucht:

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

Dies gibt mir jedoch den folgenden Fehler:

LookupError: 'base64' is not a text encoding; use codecs.encode() to handle arbitrary codecs

Wie mache ich das? (mit Python 3.4)

31
sukhvir

Denken Sie daran, base64 zu importieren und dass b64encode Bytes als Argument verwendet.

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

1) Dies funktioniert ohne Importe in Python 2:

>>>
>>> 'Some text'.encode('base64')
'U29tZSB0ZXh0\n'
>>>
>>> 'U29tZSB0ZXh0\n'.decode('base64')
'Some text'
>>>
>>> 'U29tZSB0ZXh0'.decode('base64')
'Some text'
>>>

(obwohl dies in Python3 nicht funktioniert)

2) In Python 3 müssen Sie base64 importieren und base64.b64decode ('...') - funktionieren auch in Python 2.

13
Tagar

Es stellt sich heraus, dass dies wichtig genug ist, um sein eigenes Modul zu bekommen ...

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

Zur Kompatibilität mit py2 und py3

import six
import base64

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

Während Sie natürlich die base64 -Modul können Sie auch das codecs -Modul (auf das in Ihrer Fehlermeldung verwiesen wird) für binäre Codierungen verwenden (dh nicht standardmäßige und nicht textbasierte Codierungen).

Zum Beispiel:

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

Dies kann für große Datenmengen nützlich sein, da Sie sie verketten können, um komprimierte und durch JSON serialisierbare Werte zu erhalten:

my_large_bytes = my_bytes * 10000
codecs.decode(
    codecs.encode(
        codecs.encode(
            my_large_bytes,
            "Zip"
        ),
        "base64"),
    "utf8"
)

Refs:

0
TomDotTom

Verwenden Sie den folgenden Code: 

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."
0
ujjawal sharma