全部博文(54)
分类: Python/Ruby
2010-11-27 21:41:32
import
sys
print
sys.maxunicode
如果输出的值为65535,那么就是UCS-2,如果输出是1114111就是UCS-4编码。
我们要认识到一点:当一个字符串转换为内部编码后,它就不是str类型了!它是unicode类型:
a
=
"
风卷残云
"
print
type(a)
b
=
a.unicode(a,
"
gb2312
"
)
print
type(b)
输出:
这个时候b可以方便的任意转换为其他编码,比如转换为utf-8:
c
=
b.encode(
"
utf-8
"
)
print
c
c输出的东西看起来是乱码,那就对了,因为是utf-8的字符串。
好了,该说说codecs模块了,它和我上面说的概念是密切相关的。codecs专门用作编码转换,当然,其实通过它的接口是可以扩展到其他关于代码方面的转换的,这个东西这里不涉及。
上面的代码就是codecs的使用,是最常见的用法。另外还有一个问题就是,如果我们处理的文件里的字符编码是其他类型的呢?这个读取进行做处理也需要特殊的处理的。codecs也提供了方法.
#
-*- encoding: gb2312 -*-
import
codecs, sys
#
用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
bfile
=
codecs.open(
"
dddd.txt
"
,
'
r
'
,
"
big5
"
)
#
bfile = open("dddd.txt", 'r')
ss
=
bfile.read()
bfile.close()
#
输出,这个时候看到的就是转换后的结果。如果使用语言内建的open函数来打开文件,这里看到的必定是乱码
print
ss, type(ss)