Python:创建Unicode字符串

14

我在Python中遇到了Unicode问题。我需要在图表上绘制带有Unicode注释的图形。根据教程,我应该只需使用Unicode创建我的字符串。我是这样做的:

annotation = u"%s has %s rev"%(art.title, len(art.revisions))

这是包含Unicode字符的art.title,有时代码可以正常运行,而有时候会出现以下错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128)

我该怎么修复它?
编辑: 我在“注释”行之后确切地遇到了错误:
  File "script.py", line 195, in test_trie
annotation = u"%s has %s rev"%(art.title, len(art.revisions))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128)

1
art.title 是从哪里来的? - Thomas K
你确定错误消息是在你给我们的代码行中显示的吗?我怀疑实际上错误发生在你打印annotation时。如果是这种情况,你能把那一行代码也给我们展示一下吗? - jogojapan
@jogojapan 是的,看到问题的编辑了。 - ashim
你尝试过以下代码吗?这是Maksym Kozlenko建议的:annotation = u"%s has %d rev" % (art.title.decode('utf-8'), len(art.revisions)) - jogojapan
2个回答

9

我认为这取决于您的标题是否有Unicode字符。

我建议尝试添加art.title.encode("utf-8")art.title.decode("utf-8"),看看效果如何。


5

您有两个选项:要么使用 art.title.decode('utf_8'),要么通过 unicode(art.title, 'utf_8') 创建一个新的采用UTF-8编码的Unicode字符串。


这两个表达式做的是同样的事情,而decode会是我的选择。类似的情况可以参考https://dev59.com/C2sz5IYBdhLWcg3w5MI0 - Mark Ransom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接