python写utf-8文件的问题
巴扎黑
巴扎黑 2017-04-17 11:02:05
[Python讨论组]
import codecs

txt = u"\u5e10\u53f7\u4e0d\u5b58\u5728"
file=codecs.open("test","w","utf-8")
file.write(txt)
file.close()

这个可以正确写入
但当string只为ascii字符时,比如

txt = u"qwer"

这时生成的file仍旧为ascii格式
需要怎么做才能生成utf-8格式的文件?
谢谢

巴扎黑
巴扎黑

全部回复(5)
黄舟
import codecs
txt = u"qwer"
file=codecs.open("test","w","utf-8-sig")
file.write(txt)
file.close()
阿神

utf-8编码本身是ascii兼容的,所以只有ascii字符的时候,“是否utf-8”编码是没有意义的。

如果要求文件可以被明确识别为utf8编码,则需要在文件头写入几个特殊字符(即UTF-8的BOM),详情参见cute同学的回答。

p.s. 由于文件开头多了几个字符,这时候可能会导致某些应用无法兼容。

怪我咯

我一般都手动编码成str之后再写入的
s = s.encode("utf-8")

bom是微软自己发明的东西~其他系统都不带这个。。。

怪我咯

写入和读出的时候都用encode和decode处理一下就好

伊谢尔伦

文件开头加上:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import codecs

txt = u"qwer"
file=codecs.open("test","w","utf-8")
file.write(txt)
file.close()

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

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