我正在尝试对所有数据进行这种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}

08-24 16:26