我正在尝试对所有数据进行这种dict((k.encode('utf-8'), v.encode('utf-8')) for (k, v) in data.items())
编码,但在UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
处出现错误v
。
如果我直接像print data[0]['Album'].encode('utf-8')
那样做就可以了。
更新:
这是字典(data [0])中的一项:
{'Album': u'\u041c\u0435\u0442\u0440\u043e 2033', 'MIME Type': 'application/epub+zip', 'Kind': 'ebook', 'Persistent ID': '018D714FCD176F02', 'Name': u'\u041c\u0435\u0442\u0440\u043e 2033', 'Extension': 'epub', 'Artist': u'\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u0432\u0438\u0447 \u0413\u043b\u0443\u0445\u043e\u0432\u0441\u043a\u0438\u0439', 'Unique ID': '65B713FCA7956AAA', 'Publisher Unique ID': 'urn:uuid:f29c974b-d68c-412c-964f-652e5a24a7c4', 'Package Hash': 'DB3AC6E6F43ED7477CE1B998C410FD5F', 'Has Artwork': True, 'Path': '018D714FCD176F02.epub', 'Is Protected': False}
最佳答案
对我有效,无需对键进行编码(并且可以对键进行编码,但是对编码没有作用-所有键实际上只是ascii字符串),并且对string进行校验:
{k:v.encode('utf-8') if isinstance(v, basestring) else v for k,v in d.items()}
{'相册':'\ xd0 \ x9c \ xd0 \ xb5 \ xd1 \ x82 \ xd1 \ x80 \ xd0 \ xbe 2033','MIME
类型”:“ application / epub + zip”,“种类”:“ ebook”,“具有艺术品”:是,
'名称':'\ xd0 \ x9c \ xd0 \ xb5 \ xd1 \ x82 \ xd1 \ x80 \ xd0 \ xbe 2033','扩展名':
'epub','Artist':
'\ xd0 \ x94 \ xd0 \ xbc \ xd0 \ xb8 \ xd1 \ x82 \ xd1 \ x80 \ xd0 \ xb8 \ xd0 \ xb9
\ xd0 \ x90 \ xd0 \ xbb \ xd0 \ xb5 \ xd0 \ xba \ xd1 \ x81 \ xd0 \ xb5 \ xd0 \ xb5 \ xd0 \ xb2 \ xd0 \ xb8 \ xd1 \ x87
\ xd0 \ x93 \ xd0 \ xbb \ xd1 \ x83 \ xd1 \ x85 \ xd0 \ xbe \ xd0 \ xb2 \ xd1 \ x81 \ xd0 \ xba \ xd0 \ xb8 \ xd0 \ xb9',
'唯一ID':'65B713FCA7956AAA','发布者唯一ID':
'urn:uuid:f29c974b-d68c-412c-964f-652e5a24a7c4','Package Hash':
'DB3AC6E6F43ED7477CE1B998C410FD5F','路径':'018D714FCD176F02.epub',
“永久性ID”:“ 018D714FCD176F02”,“受保护”:False}