当进行以下串联时:
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/