不可打印 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
你现在可以打印出来了,但你也可以将它解码为 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'>
我从图像中检索了一些 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'>