不可打印 python unicode 字符串

unprintable python unicode string

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

你现在可以打印出来了,但你也可以将它解码为 un​​icode,所以它最终会得到正确的类型以供进一步处理:

>>> 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'>