python中的字符编码

1. str的decode与encode成员方法
str.decode : other encoding  -> utf16
str.encode : utf16 -> other encoding
2. 文件编码与字符串在内存中的表示形式

文件编码同字符串在内存中的编码相同。例如:,程序运行后,结果如下:

 

1 #coding:utf8 

2

3 u1 = '你好'.decode('gbk')
4 u2 = '你好'.decode('utf8')
5 print u1
6 print u2

文件编码为 utf8

浣犲ソ
你好
注意:
1. 文件时utf8编码;
2. u1以gbk解码,结果是乱码;
3. 而u2是以utf8解码,结果正确。

3. 强大的codecs模块
codecs是encoders和decoders的缩写。
这个模块的强大之处在于它提供了流的方式来处理字符串编码,当处理的数据很多时,这种方式很有用。
你可以使用IncrementalEncoder和IncrementalDecoder,但是强烈建议使用StreamReader和StreamWriter,因为使用它们会大大简化你的代码。

例如,有一个test.txt的文件,它的编码为gbk,现在我需要将它的编码转换为utf8,可以编写如下代码:

  

 1 #coding:utf8

 2 import codecs
 3 
 4 # 打开文件
 5 fin = open('test.txt''r')
 6 fout = open('utf8.txt''w')
 7 
 8 # 获取 StreamReader
 9 reader = codecs.getreader('gbk')(fin)
10 # 获取 StreamWriter
11 writer = codecs.getwriter('utf8')(fout)
12 
13 din = reader.read(10)
14 while din:
15     writer.write(din)
16     din = reader.read(10)

posted on 2013-03-05 09:41  sanlo  阅读(355)  评论(0编辑  收藏  举报