我以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')等同于做你的字符串'
显然,这不是因为它会引发错误。 我怎么能这样做呢?
答案 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)