我从图像中检索了一些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/