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
- UTF-16 LE带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
相关产品推荐
相关产品推荐

