- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 Python 中遇到了一个关于 __future__.unicode_literals
的奇怪问题。不导入 unicode_literals
我得到正确的输出:
# encoding: utf-8
# from __future__ import unicode_literals
name = 'helló wörld from example'
print name
但是当我添加 unicode_literals
导入时:
# 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_literals
是否将每个字符串编码为 utf-8?我应该怎么做才能覆盖这个错误?
最佳答案
您的终端或控制台未能让 Python 知道它支持 UTF-8。
如果没有 from __future__ import unicode_literals
行,您将构建一个包含 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')
您也可以通过创建没有 from __future__
导入语句的 unicode 文字来重现该问题:
# encoding: utf-8
name = u'helló wörld from example'
print name
其中 u'..'
也是一个 unicode 文字。
如果没有详细说明您的环境是什么,就很难说解决方案是什么;这在很大程度上取决于所使用的操作系统和控制台或终端。
关于python - unicode_literals 是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23370025/
我在 Python 中遇到了一个关于 __future__.unicode_literals 的奇怪问题。不导入 unicode_literals 我得到正确的输出: # encoding: utf-
在 Python 2 中,我想评估一个包含文字表示的字符串。我想安全地执行此操作,所以我不想使用 eval()——相反,我已经习惯了使用 ast.literal_eval()的任务。 但是,我还想在纯
我在 type() 调用中遇到支持 python2 和 python3 的问题。这说明了问题: from __future__ import unicode_literals name='FooCla
我已经在 Py2.7 中创建了一个包,我正在尝试使其与 Py3 兼容。问题是如果我在 __init__.py 导入构建返回这个错误 error in daysgrounded setup comman
使用 unicode_literals 时使用 pygame.Color 名称的正确方法是什么? Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:
我只是想知道为什么每个自动生成的 Django 迁移文件都包含以下行。 from __future__ import unicode_literals 即使我删除所有这些行,应用程序也运行正常。那么,
我们正准备迁移到 Python 3.4 并添加了 unicode_literals。我们的代码广泛依赖于使用 subprocess 模块的外部实用程序的管道。以下代码片段在 Python 2.7 上运
我正在创建一些必须在 2.6、2.7 和 3.3 下运行的演示 Python 脚本。 作为其中的一部分,每个模块都带有前缀 from __future__ import unicode_literal
使用 Nginx、uWSGI 和简单的 Flask 应用程序添加启用 unicode_literals 的 header 似乎会失败: # -*- coding: utf-8 -*- from __f
我正在尝试将我的 Python 2.7 程序转换为使用 from __future__ import unicode_literals 但是 pylint 对我大喊我不能将 unicode 字符串作为
我们已经让我们的代码库在 Python 2.6 下运行。为了准备 Python 3.0,我们开始添加: from __future__ import unicode_literals 到我们的 .py
我正在尝试 Django。我本来打算阅读它的文档。它不在那里,我必须 build 它。阅读Django-1.5/doc文件夹中的Readme,下载Sphinx文档Python模块。使用 easy_in
这个问题看起来与 this one 惊人地相似,但是评论中的建议不起作用(不再?),如下所示。 我正在尝试编写一个 python2-3 兼容包,我的一个方法中有一个类生成器,type() 在 pyth
我现在已经阅读了一些关于 unicode 的线程。 我使用的是 Python 2.7.2,但使用的是 future 的 print_function(因为原始打印语句让我很困惑......) 下面是一
我正在使用 Django 来管理 Postgres 数据库。我在数据库中存储了一个代表西类牙(马拉加)城市的值。我的 Django 项目通过将 from __future__ import unico
我所知道的是: # -*- 编码:utf-8 -*- 它用于声明 Python 源文件的编码,一旦我设置了编码名称,Python 解析器将使用给定的编码解释文件。我称之为“文件编码”; 从 __fut
考虑以下演示脚本: # -*- coding: utf-8 -*- from __future__ import division from __future__ import unicode_lit
我是一名优秀的程序员,十分优秀!