程序的输出
# -*- 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)在列表中显示编码,但显示实际(未编码)字符没有?
答案 0 :(得分:2)
由于print()
使用str()
(漂亮打印)来显示其字符串,str(j)
将显示奇怪的字符。但是,str(jlist)
将获得列表的字符串版本。列表的__str__
方法通过在每个方法上使用repr()
来获取字符串。 repr()
是原始格式。这意味着标签将显示为\t
,而不是一堆空格;新行将显示为\n
,而不是新行等。原因是如果您要打印列表,则可能是用于调试或测试。在这些情况下,你真的想知道后台发生了什么。