解码编码字符串的最佳方法是什么: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的建议,但到目前为止还没有任何建议。我在这里错过了什么吗?
答案 0 :(得分:6)
您需要调用encode
函数而不是decode
函数,因为item
已经解码。
像这样:
decoded_value = item.encode('utf-8')
答案 1 :(得分:3)
该字符串已经 解码(它是一个Unicode对象)。如果要将其存储在文件中(或将其发送到哑终端等),则需要编码它。
通常,在使用Unicode时,你应该(在Python 2中)在工作流的早期解码你的所有字符串(你似乎已经完成了;许多处理互联网流量的库已经为你做了),然后做您在Unicode对象上的所有工作,然后在最后,当写回来时,将它们编码为您正在使用的任何编码。