如何解码 unicode 字符串 Python
How to decode a unicode string Python
解码如下所示的编码字符串的最佳方法是什么:u'u\xf1somestring'
?
背景:我有一个包含随机值(字符串和整数)的列表,我试图将列表中的每个项目都转换为一个字符串,然后处理每个项目。
原来有些项目的格式是:u'u\xf1somestring'
当我尝试转换为字符串时,出现错误:UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 1: ordinal not in range(128)
我试过了
item = u'u\xf1somestring'
decoded_value = item.decode('utf-8', 'ignore')
但是,我总是遇到同样的错误。
我已经阅读了有关 unicode 字符的内容,并尝试了 SO 的一些建议,但 none 到目前为止都有效。我在这里错过了什么吗?
您需要调用 encode
函数而不是 decode
函数,因为 item
已经解码。
像这样:
decoded_value = item.encode('utf-8')
该字符串已经解码(它是一个 Unicode 对象)。如果您想将其存储在文件中(或将其发送到哑终端等),则需要对其进行 编码 。
通常,在使用 Unicode 时,您应该(在 Python 2 中)在工作流程的早期解码所有字符串(您似乎已经这样做了;许多处理互联网流量的图书馆已经这样做了为你),然后在 Unicode 对象上完成所有工作,然后在最后,当写回它们时,将它们编码为你正在使用的任何编码。
解码如下所示的编码字符串的最佳方法是什么:u'u\xf1somestring'
?
背景:我有一个包含随机值(字符串和整数)的列表,我试图将列表中的每个项目都转换为一个字符串,然后处理每个项目。
原来有些项目的格式是:u'u\xf1somestring'
当我尝试转换为字符串时,出现错误:UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 1: ordinal not in range(128)
我试过了
item = u'u\xf1somestring'
decoded_value = item.decode('utf-8', 'ignore')
但是,我总是遇到同样的错误。
我已经阅读了有关 unicode 字符的内容,并尝试了 SO 的一些建议,但 none 到目前为止都有效。我在这里错过了什么吗?
您需要调用 encode
函数而不是 decode
函数,因为 item
已经解码。
像这样:
decoded_value = item.encode('utf-8')
该字符串已经解码(它是一个 Unicode 对象)。如果您想将其存储在文件中(或将其发送到哑终端等),则需要对其进行 编码 。
通常,在使用 Unicode 时,您应该(在 Python 2 中)在工作流程的早期解码所有字符串(您似乎已经这样做了;许多处理互联网流量的图书馆已经这样做了为你),然后在 Unicode 对象上完成所有工作,然后在最后,当写回它们时,将它们编码为你正在使用的任何编码。