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?
The encode() method encodes the string, using the specified encoding. If no encoding is specified, UTF-8 will be used.
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.
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.
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'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With