首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unicode_literals是做什么用的?

unicode_literals是做什么用的?
EN

Stack Overflow用户
提问于 2014-04-30 00:16:56
回答 1查看 24.4K关注 0票数 47

我在Python语言中遇到了一个奇怪的__future__.unicode_literals问题。在不导入unicode_literals的情况下,我会得到正确的输出:

代码语言:javascript
复制
# encoding: utf-8
# from __future__ import unicode_literals
name = 'helló wörld from example'
print name

但是当我添加unicode_literals导入时:

代码语言:javascript
复制
# encoding: utf-8
from __future__ import unicode_literals
name = 'helló wörld from example'
print name

我得到了这个错误:

代码语言:javascript
复制
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 4: ordinal not in range(128)

unicode_literals是否将每个字符串都编码为utf-8?我应该怎么做才能覆盖这个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-30 00:22:28

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

如果没有UTF行,您将构建一个包含from __future__ import unicode_literals -8编码字节的字节字符串。使用该字符串,您将构建一个unicode字符串。

print必须以不同的方式对待这两个值;字节字符串被原封不动地写入sys.stdout。Python字符串首先被编码成字节,然后unicode查询sys.stdout.encoding。如果您的系统不能正确地告诉Python它支持的编解码器,则默认使用ASCII。

您的系统无法告诉Python使用哪个编解码器;sys.stdout.encoding被设置为ASCII值,并且对unicode值进行编码打印失败。

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

代码语言:javascript
复制
# encoding: utf-8
from __future__ import unicode_literals
name = 'helló wörld from example'
print name.encode('utf8')

您也可以通过创建不带from __future__ import语句的unicode文本来重现此问题:

代码语言:javascript
复制
# encoding: utf-8
name = u'helló wörld from example'
print name

其中u'..'也是unicode文本。

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

票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23370025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档