python之旅——跨平台文件编码

本文探讨了Python中文件编码的问题,重点在于Python2与Python3对中文编码的处理差异。介绍了如何在代码文件中指定编码,并展示了读写文本文件时确保正确编码的方法。为解决跨平台可能出现的中文乱码问题,建议使用UTF-8编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件编码

更多精彩内容,请查看文档源码库:youngzhiyong的book书架

  1. python代码文件编码
  • Python中的默认编码格式是ASCII格式,在未修改编码格式时,python2将无法解析中文编码。而python3可以进行正确的解析。
  • 在python代码文件开头,使用下面两种方式之一标识当前代码文件的编解码(utf或UTF均可)
    • #coding:utf-8
    • #-\*-coding:utf-8-\*-
  1. 输出文本文件编码

    with open("test.txt", "w") as fd:
        fd.write(test_str)
        # print(test_str, file=fd)
    

在一般情况下,使用上述代码方式,比如以文本写模式打开文件,print或write写入即可。

  1. 读取文本文件编码

     with open("test.txt", "r", encoding="utf-8") as fd:
         content = fd.read()
    
  2. 若不了解文本文件的编码情况,可使用开源库检测文本的编码

    import chardet
    
    filename = "test.py"
    # 开源库,检测出文件的编码格式
    file_encoding = chardet.detect(open(filename, "rb").read())["encoding"]
    
    # 使用开源库检测出的编码格式,读取文本文件
    with open(filename, "r", encoding=file_encoding) as fd:
        content = fd.read()
    
    

说明
使用print(test_str)方式能够在终端输出正确的中文,但输出到文件中后,不能跨平台查看,出现中文乱码。因此,我们的文本输出需要指定通用跨平台的编码方式:UTF-8

with open("test.txt", "wb") as fd:
    fd.write(test_str.encoding("utf-8"))

或者

with open("test.txt", "w", encoding="utf-8") as fd:
    fd.write(test_str)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值