文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python中的unicode编码的若干问题

python中的unicode编码的若干问题

时间:2009-03-18  来源:thomation

汉字就是麻烦,中国的标准是gbk,而国际标准是unicode,需要转来转去的,python中使用unicode和decode,encode转
unicode:把某个编码的字符串转成unicode,例如unicode(s,'gb2312')把gb2312编码的s转成unicode编码
decode:把某个编码的字符串转成unicode,例如s.decode('gb2312'),把s从gb2312转成unicode
encode:把unicode编码转成其他编码,例如s.encode('gb2312'),把s从unicode转成gb2312
但是究竟系统是什么编码呢,需要使用locale.getdefaultlocale()[1]来取这个编码,例如我的系统是cp936.
好了,开始实际点的东西,编码这方面还是一头雾水,按照以上做还是做不出来,真是见鬼了。
如果一个文件是按照unicode编码存的,需要下面这样做才成正常输出
while True:
    s = f.readline()
    if len(s) == 0:
        break
    print unicode(s,'utf-8').encode(locale.getdefaultlocale()[1])
最后一句话看起来罗嗦,把s从转成utf-8后再转成默认编码。等以后仔细研究一下再说吧,搞得头疼,现在终于能正常显示千千的xml了

现在想想可能是这样,文件是按照unicode编码,但是系统认为是gbk编码,所以直接读入输出是乱码。unicode是把s从utf-8转成unicode,然后再用encode转成gbk,输出就ok了,果然,可以去掉后便的encode,系统自动转gbk
现在终于想明白答案了,unicode和gbk是编码的值,而utf-8和utf-16是编码的表现形式,python处理的是unicode,所以不要把uft-8个unicode混淆,如果GBK要转UTF-8必须先转uncode码,再转utf-8就OK了。
所以,甚至可以把utf-8,unicode,gbk理解成不同的编码,中间通过unicode转换,呵呵。
相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载