2015-10-21 26 views
5

ファイルを文字列に変換することが可能かどうか疑問に思っていました(type(output) == str)。私が今までにGoogleで見つけたのは、How do you base-64 encode a PNG image for use in a data-uri in a CSS file?のような答えでした。これはPython 2で動作するようですが(私が間違っていなければ、文字列はバイト文字列でしたが)、Pythonでは動作しません3.4。バイト文字列をbase64でエンコードされた文字列に変換します(出力はバイト文字列ではありません)

私は、通常の文字列に、この結果のバイト文字列を変換したい理由は、私はJSONオブジェクトに格納するために、このbase64でエンコードされたデータを使用したいということですが、私のようなエラーを取得しておいてください。

TypeError: b'Zm9v' is not JSON serializable 
ここ

は、それがうまくいかないところの最小限の例です:

import base64 
import json 
data = b'foo' 
myObj = [base64.b64encode(data)] 
json_str = json.dumps(myObj) 

だから私の質問は次のとおりです。まだ(そうbase64でエンコードを保ちながら、タイプstrのオブジェクトにタイプbytesのこのオブジェクトを変換する方法がありますこの例では、結果は["Zm9v"]となります。これは可能ですか?

答えて

6

は、文字列に変換する

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

代わりの

data = b'foo' 

を試してみてください。

+0

あたかもスナップしているようです。どうもありがとう! – Joeytje50

関連する問題