python 字典中有中文写入文件后变成编码
PHP中文网
PHP中文网 2017-04-17 17:00:10
[Python讨论组]
PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
ringa_lee

你需要借助于python的json模块处理数据的dump操作;

#!/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}])

结果如下:

λ  ~/  python demo.py 
λ  ~/  cat lst.utf8 
[{"name": "北京", "zone": 10}, {"name": "重庆", "zone": 20}]
PHP中文网

修改你操作系统的文件编码

PHP中文网

其实你在第3行后,保存的就是cat后的结果,如下:

import codecs
fp = codecs.open('test.txt', 'w', 'UTF-8')
a = [{'name': '北京', 'zone': 10}, {'name': '重庆', 'zone': 20}]
print a

'\xe5\x8c\x97\xe4\xba\xac',控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。

你尝试调整你虚拟终端的显示编码看看

高洛峰

import sys
sys.setdefaultencoding("utf-8")
a = [{'name': u'北京', 'zone': 10}, {'name': u'重庆', 'zone': 20}]

这样试试看。

高洛峰

不能直接写呀,你需要dump你的字典,看楼上的json方案

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号