python2.7编码的问题

python2.7默认的ascii编码,遇到中文时会出现一大堆毛病。

网上有相关的文章,可以看一看,在这儿根据我实际中的问题补充几点:

1、对于中文的输出,特别是输出到文件中去,需要在编码开题加上 #coding:utf-8,中文字符需要做相应的编码转换。如:

str = u'<div>啦啦啦,德玛西亚</div>'
e=str.encode('utf-8')
with open('out.txt','w') as f:
    f.write(e)
#而打印(print),直接打印就行了。
print str

2、对于字典是输出。字典中包含中文时,输出到文件依旧想显示为中文,需要做一些变换:

#!/usr/bin/python
# encoding:utf-8

import json

def dump(lst):
    fp = open("lst.utf8", "w")
    fp.write(json.dumps(lst, ensure_ascii=False))
    fp.close()

if __name__ == '__main__':
    dump([{'name': '北京', 'zone': 10}, {'name': '重庆', 'zone': 20}])
#结果为:
#[{"name": "北京", "zone": 10}, {"name": "重庆", "zone": 20}]

当字典中包含unicode编码字符时候,需要将所有的unicode编码转换成utf-8编码。

方法就是对每个关键字重新赋值,赋予转码后的值。


3、从文件中读取的时候,需要注意编码问题外。还要注意某些软件会在文本开头插入BOM。notepad++可以处理编码问题,以及BOM开头带来的问题。




以上两步基本上可以解决所见到的所有编码问题。算是慢慢明白廖雪峰老司机所说的仅需要记住unicode和utf-8编码的原因了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值