带有unicode变量的UnicodeDecodeError

时间:2013-09-22 18:55:36

标签: python unicode

我正在使用unicode变量并替换一些字符,但是当我尝试处理某个值时会引发UnicodeDecodeError的错误,当我在python的文件开头设置编码时。

我尝试了这个编码:iso-8859-15,cp1251,我看了一下这个,但是当变量的值包含这个字符时却没有:`

在终端上有效:

a='Don\xb4t dream it\xb4s over'
a = a.replace("\xb4","'")
print a
output: Don't dream it's over

为什么它在终端中有效但在我的python文件中却没有?。

2 个答案:

答案 0 :(得分:0)

代码对我有用。这就是我所做的:

  1. 将以下代码复制到文件中,并将其命名为test.py

    a='Don\xb4t dream it\xb4s over'
    a = a.replace("\xb4","'")
    print a
    
  2. 运行test.py python ./test.py,这是输出

    Don't dream it's over
    
  3. 我的python版本是Python 2.7.3

答案 1 :(得分:0)

您需要从正确的代码页解码为Unicode。然后,如果您需要在另一个代码页(例如UTF-8)中,则可以对其进行重新编码。当您使用print时,Python会尝试自动将其编码到终端的代码页。

>>> a = a.decode('iso-8859-1')
>>> print a
Don´t dream it´s over

编辑:尝试破译实际问题很困难。也许你正试图从文件中读取文本,那是什么不起作用?再次了解文件的编码很重要。许多现代文件使用UTF-8编码。

a = f.readline()
a = a.decode('utf-8')
print a