python - 更改自动 str 到 unicode 转换的默认编码

标签 python python-2.7 python-unicode

当进行以下串联时:

a = u'Hello there '
b = 'pirate ®'
c = a + b # This will raise UnicodeDecodeError

在python 2中,'pirate®'会通过ascii编码自动转换为unicode类型。并且由于字符串中存在非 ascii unicode 序列 (®),因此会失败。

有没有办法将默认编码更改为utf8?

最佳答案

这是可能的,尽管它被认为是一种黑客行为。您必须重新加载sys:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

请参阅此博客文章,了解由此引发的潜在问题的一些解释: http://blog.startifact.com/posts/older/changing-the-python-default-encoding-considered-harmful.html

这可能是您唯一的选择,但您应该意识到它可能会导致进一步的问题。这就是为什么它设置起来并不简单。

关于python - 更改自动 str 到 unicode 转换的默认编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25657510/

相关文章:

Python从文件导入数据到字典并比较数据

python - 如何将正确的编码参数传递给markdown_py?

python - 使用 Django 将社区元素添加到网站

python virtualenv 没有使用正确版本的 python

python - Unicode 字典键问题

python - 如何在Python中查找特定文件

python - 如何停止(并重新启动!)Tornado 服务器?

python - ReturnDict 对象不可调用 Django Rest Framework

python - 如何将Python 2 unicode()函数转换为正确的Python 3.x语法

python - 用 html 实体替换重音字符