VSCode中调用read()读取含£的txt文件出现多余Â字符问题咨询
问题根因
该异常是典型的文件读取编码与文件实际存储编码不匹配导致的,和VSCode编辑器本身无直接关联:
- 包含
£符号的.txt文件实际以UTF-8编码存储时,英镑符号£会被编码为2个连续字节:0xC2 0xA3 - 调用
read()读取文件时如果没有显式指定编码,程序会fallback到运行环境的默认单字节编码(常见为ISO-8859-1/Windows-1252)解析字节流,双字节的£会被拆分为两个独立单字节字符映射:第一个字节0xC2对应字符Â,第二个字节0xA3对应字符£,最终就会出现「£能正常显示但凭空多出Â字符」的现象。
解决方法
- 读取文件时显式指定编码为UTF-8
调用文件读取方法时不要省略encoding参数,避免受系统默认编码的干扰,示例代码:
该写法跨Windows/macOS/Linux平台兼容,是处理文本文件读取的推荐写法。with open("你的文件路径.txt", "r", encoding="utf-8") as f: file_content = f.read() - 统一VSCode端的文件保存编码
查看VSCode窗口右下角状态栏的编码标识,确认当前txt文件的保存编码为UTF-8;如果不是,点击编码标识后选择「通过编码重新保存」,选中UTF-8即可,从存储侧避免编码错配问题。 - 异常排查校验:如果调整编码后仍有问题,可以用二进制模式读取文件,打印
£符号对应的字节段,如果返回b'\xc2\xa3'即可确认是上述编码错配问题,不存在文件内容被篡改的情况。
内容的提问来源于stack exchange,提问作者Syndrosia
相关产品推荐
相关产品推荐

