且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将字节字符串转换为base64编码的字符串(输出不是字节字符串)

更新时间:2023-02-23 18:50:46

尝试

data = b'foo'.decode('UTF-8')

代替

data = b'foo'

将其转换为字符串.

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.