Python unicode_文字用于什么?

Python unicode_文字用于什么?,python,unicode,encoding,utf-8,Python,Unicode,Encoding,Utf 8,Python中的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。不导入unicode\u文本我就得到了正确的输出: # encoding: utf-8 # from __future__ import unicode_literals name = 'helló wörld from example' print name 但是当我添加unicode\u文本时import: # enco

Python中的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。不导入
unicode\u文本
我就得到了正确的输出:

# encoding: utf-8
# from __future__ import unicode_literals
name = 'helló wörld from example'
print name
但是当我添加
unicode\u文本时
import:

# encoding: utf-8
from __future__ import unicode_literals
name = 'helló wörld from example'
print name
我得到了这个错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 4: ordinal not in range(128)
unicode\u文本是否将每个字符串编码为utf-8?

我应该怎么做来覆盖此错误?

您的终端或控制台无法让Python知道它支持UTF-8

如果没有来自uuu future uuuu导入unicode文本的
行,您将构建一个包含UTF-8编码字节的字节字符串。使用该字符串,您将构建一个
unicode
字符串

print
必须区别对待这两个值;一个字节字符串将被写入
sys.stdout
中,且保持不变。一个
unicode
字符串首先被编码为字节,Python为此参考
sys.stdout.encoding
。如果您的系统没有正确地告诉Python它支持什么编解码器,默认情况下使用ASCII

您的系统无法告诉Python使用什么编解码器
sys.stdout.encoding
被设置为ASCII,对
unicode
值进行编码以打印失败

您可以在打印时手动编码为UTF-8来验证这一点:

# encoding: utf-8
from __future__ import unicode_literals
name = 'helló wörld from example'
print name.encode('utf8')
您还可以通过创建unicode文本来重现这个问题,而不必使用
from\uuuuuuuuuuuuuuuuuuuuuuuuu
import语句:

# encoding: utf-8
name = u'helló wörld from example'
print name
其中,
u'..
也是一个unicode文本


如果没有关于您的环境的详细信息,就很难说解决方案是什么;这在很大程度上取决于所使用的操作系统和控制台或终端。

导入仅对Python 2有影响;它使Python2在处理字符串文本时的行为与Python3相同。它使您的代码跨Python版本兼容。问题在于您的终端无法显示非ascii字符。因为您使用的是
print
作为语句,所以必须使用Python 2;我已经删除了使我感到厌烦的
python-3.x
标记。@roippi:不,它完全能够显示已经编码的UTF-8字节。它并没有告诉Python它正在使用UTF-8。是的,我本来可以用更好的措辞。