来看这个:
'扣的扣的扣你母亲'.decode('utf-8').encode('gbk')
(1)str.decode():
用来把前边的字符串解码成unicode,因为Python内部用的是unicode。括号里需要的是字符串的编码——不是你想要的码,更不能不给参数——一般指默认编码,和文件默认编码一致,在代码开头用 #coding:编码 显式指明,或者用 u'字符串' 的形式直接转成unicode格式,直接省略decode这一步。
不过问题是,在UliPad里只要不显式指明编码,不管怎么decode encode 加u 用unicode() 都会报错:
SyntaxError: Non-ASCII character 'xe4' in file D:Software TokaPython 2.7.5Untitled 1.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
看样子是只要非ASCII的字符都不能用,具体原因不明。
(2)str.encode():
用于将Unicode字符编码成你想要的格式。相当于先用decode拆成unicode,再用encode组合起来。至于为什么用unicode中继前边已经说了,因为Python内部用的是unicode。
例子里的第一步已经把字符串拆成了unicode,之后我需要的是GBK编码,因为我想显示的就是中文,所以在decode的基础上再encode('gbk'),就得到了GBK编码的文字,可以正常在命令行里显示。
(3)一些方法:
sys.getdefaultencoding( ) 当然要先导入sys模块。
isinstance(string, unicode) 用来查看字符串是不是unicode编码。
关门放代码: