【发布时间】:2016-03-23 12:58:48
【问题描述】:
string = "Magic Cookie® Extra"
print string
会给出输出:
"Magic Cookie® Extra"
但是,如果我将字符串传递给这个函数,它将与另一个字符串结合起来:
def label_print(label, string):
print label + ": " + string
label_print("Product name", string)
会给出输出:
"Product name: Magic Cookie?? Extra"
为什么会这样,我该如何预防?
与第一个字符串的连接是否会重置编码,以便® 字符变为??。
我已尝试编辑函数,使局部变量 label 为 label.encode("utf-8"),但这无济于事。
我的 Python 文件顶部还有 # -*- coding: utf-8 -*-。
【问题讨论】:
-
那是 Python 2 还是 3?
-
@AaronDigulla Python 2.7。抱歉,将更新标签。
-
您在哪里运行该代码?它在 Jupyter 笔记本中给了我一个
UnicodeDecodeError(这是我所期望的),我什至无法在 python 控制台中粘贴 ®。 -
不幸的是,我无法在我的 Linux 和 Windows 系统上真正重现这一点,其中
string.encode("utf-8")行实际上会生成UnicodeDecodeError异常。文本在 Linux 上显示良好,尽管 Windows 在这两种情况下都会产生乱码。 -
我猜你忘了提到来自
__future__的一些导入。
标签: python python-2.7 encoding utf-8