python中文问题汇总
2013-06-29 17:50 阿普的博客 阅读(227) 评论(0) 编辑 收藏 举报1、中文路径
#-*-coding:utf-8-*- path=ur'E:\accumulate\Python\语法\08输入和输出\1.txt' #python内部使用的是unicode,不加前缀u则为utf-8类型
2、python中的编码与解码
在python中有两种字符串类型,分别是str和unicode,他们都是basestring的派生 类;str类型是一个包含Characters represent (at least) 8-bit bytes的序列;unicode的每个unit是一个unicode obj;所以:len(u'中国')的值是2;len('ab')的值也是2;
如果想把一个str转换成特定编码类型,需要把str转为 Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等;
#coding=utf-8 s_u = u'中国' #u表示s为unicode类型 s = '中国' #因为标志了coding=utf-8,所以s为utf-8格式的。 #1、utf-8==>unicode assert(unicode(s,'utf-8')==s_u) #equal assert(s.decode('utf-8')==s_u) #2、utf-8==>gb2312,先utf-8 ==>unicode 然后unicode转换为gb2312 print s.decode('utf-8').encode('gb2312') #如果直接s.encode('gb2312')会报错,因为s会被默认解码为unicode,而解码方式依据sys.getdefaultencoding() import sys print sys.getdefaultencoding() #一般为ascii