Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python encode()

Tags:

Has hex codec been excluded from python 3.3? When I write the code

>>> s="Hallo" >>> s.encode('hex') Traceback (most recent call last):   File "<pyshell#24>", line 1, in <module>     s.encode('hex') LookupError: unknown encoding: hex 

What does that mean? I know about binascii.hexlify() but still .encode() method is nice! Any suggestion?

like image 225
iMagur Avatar asked Nov 17 '12 23:11

iMagur


People also ask

What does encode () do in Python?

The encode() method encodes the string, using the specified encoding. If no encoding is specified, UTF-8 will be used.

What is the purpose of encode () and decode () method F?

Both these functions allow us to specify the error handling scheme to use for encoding/decoding errors. The default is 'strict' meaning that encoding errors raise a UnicodeEncodeError.

What is encoding =' latin1 in Python?

The latin-1 encoding in Python implements ISO_8859-1:1987 which maps all possible byte values to the first 256 Unicode code points, and thus ensures decoding errors will never occur regardless of the configured error handler.


1 Answers

No, using encode() to hexlify isn't nice.

The way you use the hex codec worked in Python 2 because you can call encode() on 8-bit strings in Python 2, ie you can encode something that is already encoded. That doesn't make sense. encode() is for encoding Unicode strings into 8-bit strings, not for encoding 8-bit strings as 8-bit strings.

In Python 3 you can't call encode() on 8-bit strings anymore, so the hex codec became pointless and was removed.

Although you theoretically could have a hex codec and use it like this:

>>> import codecs >>> hexlify = codecs.getencoder('hex') >>> hexlify(b'Blaah')[0] b'426c616168' 

Using binascii is easier and nicer:

>>> import binascii >>> binascii.hexlify(b'Blaah') b'426c616168' 
like image 60
Lennart Regebro Avatar answered Sep 22 '22 01:09

Lennart Regebro