[python 学习] 编码
一、源文件编码(encoding: utf-8)
1、
python 2.x 默认按ascii编码读取源文件,源码中出现了ascii不能表示的字符 "的",所以报错(3.x版本不报错)。
2、
源码中加上 encoding: utf-8,此时允许源文件中出现非ascii字符,但是在windows的DOS中输出时还会再转码(此处转为GBK)。
3、
源文件的编码和dos的输出编码都是GBK,这时内容一致。
同上。
二、字符串编码
1、字符串存储的默认编码:
python 2.7
python 3.3.3
2、unicode对象和普通字符串str
对 s 按 utf-8 解码到unicode对象,再对unicode对象按gbk编码。
直接对str字符串按gbk编码出错,是因为字符串的默认编码(python 2.7)是ascii,默认执行 s.decode('ascii').encode('gbk'),所以出错。
设置了字符串默认编码为utf-8,不会再报错。
python中我们使用decode()和encode()来进行解码和编码
在python中,使用unicode类型作为编码的基础类型。即:
decode encode
str--------->unicode--------->str
适用 python 2.x , python 3.x 又变了,一个版本一个语言。
三、basestring、str、unicode
3.1 str 和 unicode 都是 basestring 的子类:
3.2 使用 str 创建 unicode 对象:
参见:http://www.cnblogs.com/evening/archive/2012/04/19/2457440.html