采用标准库codecs模块
codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1)
1 import codecs2 f = codecs.open(filename, encoding='utf-8')
使用上边这种方式读进来utf-8文件,会自动转换为unicode。但必须明确该文件类型为utf8类型。如果是文件中有汉字,不是一个字节一个字节地读而是整个汉字的所有字节读进来然后转换成unicode(猜想跟汉字的utf8编码有关)。
下边的代码也是一种使用codecs的读写方式
#coding=utf-8import codecsfin = open("test.txt", 'r')fout = open("utf8.txt", 'w')reader = codecs.getreader('gbk')(fin)writer = codecs.getwriter('gbk')(fout)data = reader.read(10)#10是最大字节数,默认值为-1表示尽可能大。可以避免一次处理大量数据while data: writer.write(data) data = reader.read(10) 注意 unicode 至少16位