Python读取txt文件时打印或存储内容额外出现Â字符问题求解
根本原因
你遇到的乱码问题是典型的编码解码不匹配导致的字符映射错误,核心触发逻辑如下:
- 你的
pass.txt文件实际采用UTF-8编码存储,其中£符号的UTF-8编码为双字节序列0xC2 0xA3 - Python 3的
open()函数如果不传encoding参数,会默认使用操作系统的默认编码(Windows系统多为GBK/CP936,部分旧系统会默认使用Latin-1/ISO-8859-1)对文件字节流解码 - 当系统默认编码为Latin-1时,会把
0xC2单独解码为Â字符,0xA3单独解码为£字符,最终就会出现你观察到的内容前额外插入Â的现象
复现验证
你可以通过以下代码验证该逻辑:
# £对应的UTF-8原始字节 pound_bytes = b"\xc2\xa3" # 错误用Latin-1解码 print(pound_bytes.decode("latin-1")) # 输出:£ # 正确用UTF-8解码 print(pound_bytes.decode("utf-8")) # 输出:£
修复方案
打开文件时显式指定文件的实际编码即可,无需额外做字符替换,修改后的代码如下:
with open("pass.txt", encoding="utf-8") as f: first_line = f.readline().rstrip() print(first_line)
如果确认文件不是UTF-8编码,只需把encoding参数的取值替换为文件实际对应的编码(如GBK、CP936等)即可。
内容的提问来源于stack exchange,提问作者iBud
相关产品推荐
相关产品推荐

