我从图像中检索了一些exif信息,并得到以下信息:

{ ...
37510: u'D2\nArbeitsamt\n\xc3\x84nderungsbescheid'
...}


我希望是

{ ...
37510: u'D2\nArbeitsamt\nÄnderungsbescheid'
... }


我需要将值转换为str,但是我无法使其正常工作。我总是得到像(使用python27)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-15: ordinal not in range(128)


有什么想法可以解决吗?

更新:

我用python3尝试过,现在抛出了错误,但是结果是

{ ...
37510: 'D2\nArbeitsamt\nÃ\x84nderungsbescheid',
... }


这仍然不是预期的。

最佳答案

好像是utf8,它被错误地解码为latin1,然后放置在unicode字符串中。您可以使用.encode('iso8859-1')反转不正确的解码。

>>> my_dictionary = {37510: u'D2\nArbeitsamt\n\xc3\x84nderungsbescheid'}
>>> print(my_dictionary[37510].encode('iso8859-1'))
D2
Arbeitsamt
Änderungsbescheid


您现在可以将其打印出来,但是您也可以将其解码为unicode,因此最终会得到正确的类型以进行进一步处理:

>>> type(my_dictionary[37510].encode('iso8859-1'))
<type 'str'>
>>> print(my_dictionary[37510].encode('iso8859-1').decode('utf8'))
D2
Arbeitsamt
Änderungsbescheid
>>> type(my_dictionary[37510].encode('iso8859-1').decode('utf8'))
<type 'unicode'>

关于python - 不可打印的python unicode字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52973649/

10-11 22:44
查看更多