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

Python 3读取文件出现Unicode乱码,纯文本显示正常求助

解决Python读取文件时的UTF-16编码乱码问题

哈哈,这个坑我踩过!你看到的ÿþ前缀加上每个字符后面跟着的\x00,百分百是**带BOM的UTF-16LE(小端序)**编码文件搞的鬼。

为啥直接用文本编辑器打开正常?因为系统自带的记事本这类工具会自动识别文件开头的BOM(字节顺序标记),自动切换到对应的编码显示。但Python的open()函数默认用你系统的默认编码(一般是UTF-8)去读,用UTF-8解析UTF-16的内容,自然就出现乱码了。

给你两个靠谱的解决办法:

  • 直接指定编码读取:既然已经看出来是UTF-16编码,直接在open()里加上encoding参数就行,Python会自动处理BOM:

    with open(filename, encoding='utf-16') as f:
        content = f.readlines()
        return content
    
  • 自动检测编码(适合不确定编码的情况):如果以后碰到类似但不确定编码的文件,可以用chardet库先检测编码,再读取。先安装库:

    pip install chardet
    

    然后用下面的代码:

    import chardet
    
    # 先以二进制模式读取文件,检测编码
    with open(filename, 'rb') as f:
        raw_data = f.read()
        detect_result = chardet.detect(raw_data)
        file_encoding = detect_result['encoding']
    
    # 用检测到的编码读取文件
    with open(filename, encoding=file_encoding) as f:
        content = f.readlines()
        return content
    

这样应该就能正常读出你要的内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:43:51