2011-03-21 70 views
1

Python文件编码在python:是什么类型的变量

# -*- coding: UTF-8 -*- 
a = 'Köppler' 
print a 
print a.__class__.__name__ 
mydict = {} 
mydict['name'] = a 
print mydict 
print mydict['name'] 

输出:

Köppler 
str 
{'name': 'K\xc3\xb6ppler'} 
Köppler 

看来,名称保持不变,但印刷一本字典,只有当我得到这个奇怪逃脱字符串。那我在看什么?这是UTF-8的代表性吗?

回答

4

是的,这是ö(U + 00F6拉丁文小写字母O的UTF-8表示)。它由一个0xC3字节和一个0xB6八位字节组成。 UTF-8是一个非常优雅的编码,我认为值得一读。其设计的历史(用餐者的餐垫)为described here by Rob Pike

1

就我而言,Python中有两种显示对象的方法:str()和repr()。 Str()在打印内部使用,但显然dict的str()使用repr()作为键和值。

如前所述:repr()可以转义Unicode字符。

0

看来你正在使用python 2.x,你必须指定该对象实际上是一个unicode字符串,而不是一个普通的ascii。您指定代码为为utf-8,因此您实际上为您的ö键入了2个字节,并且由于它是常规字符串,因此您有2个转义字符。 尝试指定unicode​​。您可能需要在打印前对其进行编码,具体取决于您的CONSOL编码:print a.encode('utf-8')

相关问题