我用UTF-8编码保存了我的脚本.
我将Windows上的代码页更改为65001.
我在python 2.6上
脚本#1
# -*- coding: utf-8 -*-
print u'Español'
x = raw_input()
Run Code Online (Sandbox Code Playgroud)
脚本#2
# -*- coding: utf-8 -*-
a = 'Español'
a.encode('utf8')
print a
x = raw_input()
Run Code Online (Sandbox Code Playgroud)
脚本#1,打印单词罚款没有错误,脚本#2做错误:
UnicodeDecodeError:'ascii'编解码器无法解码位置4中的字节0xf1:序数不在范围内(128)
我希望能够像脚本#2一样动态地打印此变量而不会出现错误.我把提到的编码('utf8')相当于做了你的字符串'
显然,这并不是因为它会引发错误.我怎么能这样做呢?
将您的代码更改为以下内容:
# -*- coding: utf-8 -*-
a = 'Español'
a = a.decode('utf8')
print a
x = raw_input()
Run Code Online (Sandbox Code Playgroud)
Decode指定应如何读取字符串,并返回该值.进行上述更改可以解决您的问题.
问题是python将字符串存储为字节列表,而不管文件的编码如何.重要的是如何读取这些字节,这就是我们使用decode()和时所做的事情u''.
对于脚本#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)
Run Code Online (Sandbox Code Playgroud)