代替你的'弦'

rus*_*sso 1 python utf-8

我用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')相当于做了你的字符串'

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

riw*_*alk 8

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

# -*- 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''.


unu*_*tbu 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)
Run Code Online (Sandbox Code Playgroud)