当前位置: 首页 > 面试题库 >

unicode_literals用来做什么?

鞠鸿雪
2023-03-14
问题内容

__future__.unicode_literals在Python中遇到了一个奇怪的问题。不导入,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')

并且您也可以通过创建Unicode文字而不使用from __future__import语句来重现该问题:

# encoding: utf-8
name = u'helló wörld from example'
print name

u'..'unicode文字也在哪里。

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



 类似资料:
  • 我们已经看到,IPv6 可以简化一些功能,比如全球地址寻址、主机地址的自动配置等。由于 IPv6 提供的地址总数能满足我们今后几百年甚至上千年的需求,我们可以为所能想到的几乎所有物体都分配一个全球唯一的 IPv6 地址。这也是因特网规范的初衷 —— 每一个 IP 设备间都可以相互通信。这种端对端的通信允许整个因特网或者任何 IP 设备都可以双向通信,这将促进产生新的应用,新的存储、发送、接收和访问

  • 本文向大家介绍Python可以用来做什么,包括了Python可以用来做什么的使用技巧和注意事项,需要的朋友参考一下 Python技术可做web开发 很多人只了解Java、PHP可做web开发,但针对Python也可以做web开发却了解很少。很多人将会不清楚,Python实际上是和互联网技术一起长大的。做为动态性语言,而且具备高些的抽象层次的Python和Perl,迅速就被开发者们发觉更合适用以开发

  • 本文向大家介绍call和apply是用来做什么?相关面试题,主要包含被问及call和apply是用来做什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Call和apply的作用是一模一样的,只是传参的形式有区别而已 1、改变this的指向 2、借用别的对象的方法, 3、调用函数,因为apply,call方法会使函数立即执行

  • 问题内容: 该参数对和有什么用?例如,给定以下代码,的作用是什么? 问题答案: 该属性指定从模型回到模型的反向关系的名称。 如果不指定,Django会自动使用带有后缀的型号的名称创建一个,例如。 如果确实在模型上指定,则仍然可以使用,但是User.maps.语法显然更简洁,更简洁。因此,例如,如果你有一个用户对象,则可以用来获取Map模型中与关联的所有实例。 该Django文档有更多的细节。

  • 我目前正在读O'reilly的《Java 8 Lambdas》是一本非常好的书。我遇到了这样一个例子。 我有一个 这会产生正确的输出。 我的问题是将reduce方法视为最后一个参数,即二进制运算符 我的问题是这个参数用于哪个?如果我改变 如果我传递NULL,则输出相同,然后返回N.P.E。 for此参数用于什么? 更新 为什么如果我在上运行它,我会收到不同的结果? 第一次运行。 第二次运行 第三次

  • 问题内容: 该参数对和有什么用?例如,给定以下代码,的作用是什么? 问题答案: 该属性指定从模型回到模型的反向关系的名称。 如果不指定,Django会自动使用带有后缀的型号的名称创建一个,例如。 如果确实在模型上指定,则仍然可以使用,但是.语法显然更简洁,更简洁。因此,例如,如果你有一个用户对象,则可以用来获取Map模型中与关联的所有实例。

  • 默认情况下,Spring创建的Bean是singleton。它们是线程安全的,因为它们是无状态的。当我们希望Spring创建有状态Bean时,我们需要为Bean定义使用原型范围。我们需要为他们解决线程安全问题。当原型Bean注入所有无状态Bean时,它们都会受到污染。所以,我无法想象我们可以在哪里使用原型范围。你能给出一些我们可以/需要使用springbean原型的典型场景吗?还有,我们如何避免对