2015-10-21 21 views
5

Tôi đã tự hỏi nếu có thể chuyển đổi chuỗi byte mà tôi nhận được từ việc đọc tệp thành chuỗi (vì vậy type(output) == str). Tất cả tôi đã tìm thấy trên Google cho đến nay đã được câu trả lời như How do you base-64 encode a PNG image for use in a data-uri in a CSS file?, mà dường như nó sẽ làm việc trong python 2 (ở đâu, nếu tôi không nhầm, dây là chuỗi byte anyway), nhưng không hoạt động trong python 3,4 nữa.Chuyển chuỗi byte thành chuỗi được mã hóa base64 (đầu ra không phải là chuỗi byte)

Lý do tôi muốn chuyển đổi kết quả chuỗi byte này thành một chuỗi bình thường là tôi muốn sử dụng dữ liệu base64 mã hóa này để lưu trữ trong một đối tượng JSON, nhưng tôi cứ bị lỗi tương tự như:

TypeError: b'Zm9v' is not JSON serializable 

Dưới đây là một ví dụ nhỏ về nơi nó đi sai:

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

vì vậy, câu hỏi của tôi là: có cách nào để chuyển đổi đối tượng này loại bytes đến một đối tượng kiểu str trong khi vẫn giữ base64 mã hóa (như vậy trong ví dụ này, tôi muốn kết quả là ["Zm9v"]. Điều này có thể không?

Trả lời

6

Hãy thử

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

thay vì

data = b'foo' 

để chuyển đổi nó thành một chuỗi.

+0

Có vẻ như nó hoạt động. Cảm ơn rất nhiều! – Joeytje50

Các vấn đề liên quan