这是代码:
>>> 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)
Run Code Online (Sandbox Code Playgroud)
为什么在使用.decode时会引发UnicodeEncodeError?
当我使用'ignore'时,为什么会出现错误?
Aph*_*hex 62
当我第一次开始使用Python字符串和unicode乱搞,我花了一段时间才明白的行话解码和编码过,所以这里是我的职位从这里,可以帮助:
可以将解码视为从常规字节串到 unicode,以及从 unicode 返回的编码.换一种说法:
你去 -代码str产生一个unicode字符串
和恩 -代码unicode串产生的str.
所以:
unicode_char = u'\xb0'
encodedchar = unicode_char.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
encodedchar将包含以所选编码显示的unicode字符(在本例中utf-8).
Fac*_*sco 18
来自http://wiki.python.org/moin/UnicodeEncodeError
矛盾的是,解码时可能会发生UnicodeEncodeError .它的原因似乎是编码特定的decode()函数,它们通常期望str类型的参数.看来,在看到unicode参数时,decode()函数将其"下转换"为str,然后对结果进行解码,假设它是自己的编码.还可以使用ASCII编码器执行"下转换".因此,解码器内部的编码失败.
您正在尝试解码unicode. 使解码工作的隐式编码是失败的。
| 归档时间: |
|
| 查看次数: |
77227 次 |
| 最近记录: |