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编码的原因了。