python中的字符编码问题

http://python.ubuntu.org.cn/viewtopic.php?f=178&t=180244&p=1111189

 

总结python的字符编码

应该在代码最初两行内包含:
#!/usr/bin/env python
# -*- coding:utf-8 -*-

获得/设置系统的缺省编码
sys.getdefaultencoding()
sys.setdefaultencoding('utf-8')

获得文件系统的文件名的编码
sys.getfilesystemencoding()

 

获得当前终端的输入、输出编码
sys.stdout.encoding
sys.stdin.encoding

编码转换(先转换为unicode,再转换为具体的编码),有两种方法:
unicode('abc', 'mbcs').encode('utf-8')
'abc'.decode('mbcs').encode('utf-8')

常见的编码转换分为以下几种情况:
* unicode->其它编码
例如:a为unicode编码 要转为gb2312。a.encode('gb2312')
* 其它编码->unicode
例如:a为gb2312编码,要转为unicode. unicode(a, 'gb2312')或a.decode('gb2312')
* 编码1 -> 编码2
可以先转为unicode再转为编码2
如gb2312转big5
unicode(a, 'gb2312').encode('big5')
* 判断字符串的编码
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值