如何解决unicodedecode'utf-8','ignore'引发UnicodeEncodeError
当我第一次开始瞎搞与Python字符串和unicode,我花了一段时间才明白的行话 解码 和 编码 过,所以这里是从我的岗位在这里,可以帮助:
您的过程很好,您只需要再执行1个步骤即可;也就是说,从unicode编码为utf-8
(或任何其他支持“怪异字符”的编码。)
将解码视为从常规字符串转换为unicode所要做的工作,而将编码视为从unicode返回的工作。换一种说法:
你去-代码str
产生一个unicode
字符串
和恩-代码unicode
串产生的str
。
所以:
params = {'weird-chars': u'\xb0\xe7'}
encodedchars = params['weird-chars'].encode('utf-8')
encodedchars
将包含您的字符,以选定的编码显示(在这种情况下为utf-8)。
将 解码 视为从常规字节串转换 为 unicode所要做的事情,而将 编码 视为 从 unicode找回您要做的事情。换一种说法:
你 去 -代码str
产生一个unicode
字符串
和 恩 -代码unicode
串产生的str
。
所以:
unicode_char = u'\xb0'
encodedchar = unicode_char.encode('utf-8')
encodedchar
将包含您的Unicode字符,以选定的编码显示(在这种情况下为utf-8
)。
解决方法
这是代码:
>>> z = u'\u2022'.decode('utf-8','ignore')
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
File "/usr/lib/python2.6/encodings/utf_8.py",line 16,in decode
return codecs.utf_8_decode(input,errors,True)
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2022' in position 0: ordinal not in range(256)
为什么在使用.decode时会引发UnicodeEncodeError?
为什么在使用“忽略”时会出现任何错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。