Python的编码机制,unicode, utf-8, utf-16, GBK, GB2312,ISO-8859-1 等编码之间的转换。

1.unicode 缺失转换

如把 "/u5317/u4eac"转化成 gb18030的北京

s="/u5317/u4eac"
s=eval("u'%s'"% s)
s.encode('gb18030')
print s

2.unicode 转换为其它编码(GBK, GB2312等)

# -*- coding=gb2312 -*-
a=u"中文"
a_gb2312=a.encode('gb2312')
print a_gb231

3.其它编码(utf-8,GBK)转换为unicode

例如:a为gb2312编码,要转为unicode. unicode(a, 'gb2312')或a.decode('gb2312')
# -*- coding=gb2312 -*-
a=u"中文"
a_gb2312= a.encode('gb2312')
print a_gb2312

a_unicode=a_gb2312.decode('gb2312')
assert(a_unicode== a)
a_utf_8= a_unicode.encode('utf-8')
print a_utf_8

4.非unicode编码之间的转换

编码1(GBK,GB2312)  转换为 编码2(utf-8,utf-16,ISO-8859-1), 可以先转为unicode再转为编码2 ,如gb2312转utf-8

# -*- coding=gb2312 -*-
a=u"中文"
a_gb2312=a.encode('gb2312')
print a_gb2312

a_unicode=a_gb2312.decode('gb2312')
assert(a_unicode== a)
a_utf_8=a_unicode.encode('utf-8')
print a_utf_8


5.判断字符串的编码

isinstance(s, str) 用来判断是否为一般字符串   isinstance(s, unicode) 用来判断是否为unicode  如果一个字符串已经是unicode了,再执行unicode转换有时会出错(并不都出错)  ,下面代码为将任意字符串转换为unicode

def u (s , encoding ):
    if isinstance (s , unicode ):
        return s
    else :
        return unicode (s , encoding )

6.unicode 与其它编码之间的区别

为什么不所有的文件都使用unicode,还要用GBK,utf-8等编码呢? unicode可以称为抽象编码,也就是它只是一种内部表示,一般不能直接保存。 保存到磁盘上时,需要把它转换为对应的编码,如utf-8和utf-16。

7.其它方法

除上以上的编码方法,在读写文件时还可以使用codecs的open方法在读写时进行转换。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值