Python中含特殊字符的字符串需执行何种编码转换?
解决Python中字符串编码乱码(含Ã类特殊字符)的方法
问题原因
你遇到的ó这类乱码,是UTF-8编码的字节被错误用Latin-1(ISO-8859-1)解码导致的。原字符串里的ó是UTF-8双字节序列\xc3\xb3,用Latin-1解码时会被拆成两个独立字符Ã和³,最终出现乱码。
修复步骤
通过「反向编码再正确解码」的方式还原:
- 将乱码字符串重新编码为Latin-1,还原出原始的UTF-8字节数据
- 用UTF-8解码这些字节,得到正确的字符串
代码示例
# 存在乱码的字符串 garbled_str = "San Juan-Bayamón-Caguas, PR" # 第一步:编码为Latin-1获取原始字节 raw_bytes = garbled_str.encode("latin-1") # 第二步:用UTF-8解码得到正确内容 corrected_str = raw_bytes.decode("utf-8") print(corrected_str) # 输出: San Juan-Bayamón-Caguas, PR
补充说明
如果上述方法不生效,可以尝试用cp1252(Windows系统常用编码)替代latin-1,二者大部分字符兼容,仅少数特殊字符有差异,能覆盖更多场景。
内容的提问来源于stack exchange,提问作者foxRun28
相关产品推荐
相关产品推荐

