/reptile

reptile

Primary LanguageHTML

reptile

reptile

关于python2和python3的编码区别

python2: unicode字符串类型: unicode 非unicode字符串类型: str python2 中的with open 没有encoding这个属性,如果非要用就导入codecs这个包 普通写的时候unicode要转换成str的才能写,除非使用codecs

python3: unicode字符串类型: str 非unicode字符串类型: bytes unicode_str = u'你好' type(unicode_str) 打印的是<class 'str'> utf8_str = unicode_str.encode('utf-8') 转成utf8类型 但是python3中非unicode类型都是bytes类型 所以type(utf8_str) 打印为<class 'bytes'> with open('text.txt, 'w', encoding='gbk') as f: f.write(unicode_str) # f.write(unicode_str.encode('gbk') 这里的写的是unicode_str, unicode_str 为 unicode类型的, 文件格式就是gbk类型
上面的encoding是文件格式的类型 下面的encode是文本是什么类型

unicode: 可以看做一个中间人,可以通过 gbk -> unicode -> utf-8 gbk,utf-8这类都可以通过转成unicode类型来转换成别的类型

python解析器编码 import sys sys.getdefaultencoding() 查看编译器的编码 python2 ascii python3 utf-8 一般都用utf-8,可以改变默认编码 reload(sys) 重载 sys.setdefaultencoding('utf-8') 设置 import sys 重新导入就行了 一般用python2写的时候,只要在py文件头部写上 #encoding:utf-8就行了