Tho*_*hom 5 python encoding byte json image
我想将图片字节包含在JSON中,但我遇到了编码问题:
import urllib
import json
data = urllib.urlopen('https://www.python.org/static/community_logos/python-logo-master-v3-TM-flattened.png').read()
json.dumps({'picture' : data})
Run Code Online (Sandbox Code Playgroud)
UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0x89:无效的起始字节
我不知道如何处理这个问题因为我处理图像,所以我对这个编码问题有点困惑.我正在使用python 2.7.有人能帮帮我吗?:)
JSON数据期望处理Unicode文本.二进制图像数据不是文本,因此当json.dumps()函数尝试将字节串解码为unicode使用UTF-8(默认值)解码失败时.
您必须首先使用文本安全编码包装二进制数据,例如Base-64:
json.dumps({'picture' : data.encode('base64')})
Run Code Online (Sandbox Code Playgroud)
当然,这假设接收器期望您的数据被包装.
如果您的API端点设计得非常糟糕,以至于您希望将图像字节作为文本传入,那么另一种方法是假装您的字节实际上是文本; 如果您首先将其解码为Latin-1,则可以将这些字节直接映射到Unicode代码点:
json.dumps({'picture' : data.encode('latin-1')})
Run Code Online (Sandbox Code Playgroud)
如果数据已经是unicode对象,则json库将继续将其视为文本.这意味着它可以用\uhhhh转义替换非ASCII代码点.
| 归档时间: |
|
| 查看次数: |
13726 次 |
| 最近记录: |