代替你的'弦'

时间:2010-08-26 17:07:48

标签: python utf-8

我以UTF-8编码保存了我的脚本。

我将Windows上的代码页更改为65001。

我正在使用python 2.6

脚本#1

# -*- coding: utf-8 -*-
print u'Español'
x = raw_input()

脚本#2

# -*- coding: utf-8 -*-
a = 'Español'
a.encode('utf8')
print a
x = raw_input()

脚本#1,打印出没有错误的单词,脚本#2出错:

  

UnicodeDecodeError:'ascii'编解码器   无法解码位置4中的字节0xf1:   序数不在范围内(128)

我希望能够像脚本#2一样动态地打印此变量而不会出现错误。 我把提到的编码('utf8')等同于做你的字符串'

显然,这不是因为它会引发错误。 我怎么能这样做呢?

2 个答案:

答案 0 :(得分:8)

将您的代码更改为以下内容:

# -*- coding: utf-8 -*-
a = 'Español'
a = a.decode('utf8')
print a
x = raw_input()

Decode指定字符串应该如何读取,并返回该值。进行上述更改可以解决您的问题。

问题是python将字符串存储为字节列表,而不管文件的编码如何。重要的是这些字节是如何读取,这就是我们在使用decode()u''时所做的事情。

答案 1 :(得分:5)

脚本#2:

a = 'Español'           # In Python2 this is a string of bytes
a = a.decode('utf-8')   # This converts it to a unicode string
print(a)