I was wondering if it is possible to convert a byte string which I got from reading a file to a string (so type(output) == str
). All I've found on Google so far has been answers like How do you base-64 encode a PNG image for use in a data-uri in a CSS file?, which does seem like it would work in python 2 (where, if I'm not mistaken, strings were byte strings anyway), but which doesn't work in python 3.4 anymore.
The reason I want to convert this resulting byte string to a normal string is that I want to use this base64-encoded data to store in a JSON object, but I keep getting an error similar to:
TypeError: b'Zm9v' is not JSON serializable
Here's a minimal example of where it goes wrong:
import base64
import json
data = b'foo'
myObj = [base64.b64encode(data)]
json_str = json.dumps(myObj)
So my question is: is there a way to convert this object of type bytes
to an object of type str
while still keeping the base64-encoding (so in this example, I want the result to be ["Zm9v"]
. Is this possible?
Try
data = b'foo'.decode('UTF-8')
instead of
data = b'foo'
to convert it into a string.