python写utf-8文件的问题

 手机用户2502883383 发布于 2022-11-08 09:00
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 sys
    reload(sys)
    sys.setdefaultencoding('utf-8')

    import codecs

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

    2022-11-12 10:59 回答
  • 写入和读出的时候都用encode和decode处理一下就好

    2022-11-12 10:59 回答
  • 我一般都手动编码成str之后再写入的
    s = s.encode("utf-8")

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

    2022-11-12 10:59 回答
  • utf-8编码本身是ascii兼容的,所以只有ascii字符的时候,“是否utf-8”编码是没有意义的。

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

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

    2022-11-12 10:59 回答
  • import codecs
    txt = u"qwer"
    file=codecs.open("test","w","utf-8-sig")
    file.write(txt)
    file.close()
    2022-11-12 10:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有