python中文问题汇总

1、中文路径

#-*-coding:utf-8-*-

path=ur'E:accumulatePython语法8输入和输出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
注:字符串前缀u在python3.x中被取消了,即所有字符串默认为unicode,因此可以直接将字符串转换为特定的字符集。
原文地址:https://www.cnblogs.com/zhizouxiao/p/3162579.html