I am having a problem with my encoding in Python. I have tried different methods but I can't seem to find the best way to encode my output to UTF-8.
This is what I am trying to do:
result = unicode(google.searchGoogle(param), "utf-8").encode("utf-8")
searchGoogle
returns the first Google result for param
.
This is the error I get:
exceptions.TypeError: decoding Unicode is not supported
Does anyone know how I can make Python encode my output in UTF-8 to avoid this error?
Python's string type uses the Unicode Standard for representing characters, which lets Python programs work with all these different possible characters. Unicode (https://www.unicode.org/) is a specification that aims to list every character used by human languages and give each character its own unique code.
Encoding refers to encoding a string using an encoding scheme such as UTF-8 . Decoding refers to converting an encoded string from one encoding to another encoding scheme.
Since Python 3.0, strings are stored as Unicode, i.e. each character in the string is represented by a code point. So, each string is just a sequence of Unicode code points. For efficient storage of these strings, the sequence of code points is converted into a set of bytes. The process is known as encoding.
Looks like google.searchGoogle(param)
already returns unicode
:
>>> unicode(u'foo', 'utf-8') Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> unicode(u'foo', 'utf-8') TypeError: decoding Unicode is not supported
So what you want is:
result = google.searchGoogle(param).encode("utf-8")
As a side note, your code expects it to return a utf-8
encoded string so what was the point in decoding it (using unicode()
) and encoding back (using .encode()
) using the same encoding?
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