为什么unicode字符在列表中出现?

时间:2016-03-03 18:04:04

标签: python unicode utf-8

程序的输出

# -*- coding: utf-8 -*-
j = "Jürgen"
jlist = [j]
print j, type(j)
print jlist, type(jlist)

Jürgen <type 'str'>
['J\xc3\xbcrgen'] <type 'list'>

这里没有错。 \xc3\xbc只是utf-8 encoding of ü。我想要了解的是差异。为什么OS X终端(否则处理utf-8编码的unicode就好了)和调试器(PyCharm)在列表中显示编码,但显示实际(未编码)字符没有?

1 个答案:

答案 0 :(得分:2)

由于print()使用str()(漂亮打印)来显示其字符串,str(j)将显示奇怪的字符。但是,str(jlist)将获得列表的字符串版本。列表的__str__方法通过在每个方法上使用repr()来获取字符串。 repr()是原始格式。这意味着标签将显示为\t,而不是一堆空格;新行将显示为\n,而不是新行等。原因是如果您要打印列表,则可能是用于调试或测试。在这些情况下,你真的想知道后台发生了什么。