You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python无法打开UTF-8编码文本文件,求助排查编码问题

解决Exchange PowerShell生成文件的Python编码读取问题

嘿,我碰到过好几次Exchange PowerShell导出文件的编码坑了,给你几个实用的排查和解决思路:

  • 先搞清楚文件的真实编码:
    直接用PowerShell就能查,跑这个命令(替换成你的文件路径):

    Get-Content -Path "你的文件路径" -Encoding Byte | Select-Object -First 10
    

    看输出的字节序列:

    • UTF-16 LE带BOM的话开头是0xFF 0xFE
    • UTF-8带BOM是0xEF 0xBB 0xBF
    • Windows-1252/GBK这类编码一般没有BOM
  • Python读取UTF-16 LE带BOM的正确姿势:
    你之前试了utf-16-le但可能没处理BOM——直接用utf-16编码的话,Python会自动识别并跳过BOM,试试这个:

    with open("你的文件路径", "r", encoding="utf-16") as f:
        content = f.read()
    

    要是你想手动处理BOM也可以:

    with open("你的文件路径", "rb") as f:
        f.seek(2)  # 跳过UTF-16 LE的2字节BOM
        content = f.read().decode("utf-16-le")
    
  • 试试Windows系统默认编码:
    如果你的Exchange PowerShell是在中文Windows环境下运行,导出的文件可能用的是gbk;英文环境则大概率是cp1252,分别试试:

    # 中文环境
    with open("你的文件路径", "r", encoding="gbk") as f:
        content = f.read()
    
    # 英文环境
    with open("你的文件路径", "r", encoding="cp1252") as f:
        content = f.read()
    
  • 从源头避免问题:导出时指定编码:
    其实最省心的是让PowerShell导出时就用你能轻松读取的编码,比如UTF-8:

    # 替换成你的Exchange命令和输出路径
    Get-Mailbox | Out-File -Path "导出文件路径" -Encoding utf8
    

    这样用Python直接encoding="utf-8"读取就完全没问题了。

内容的提问来源于stack exchange,提问作者Jan Musil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:01:42