Python3如何将包含转义emoji Unicode的字符串转换为显示正确emoji的字符串
问题修复方案
你遇到的是典型的编码映射错误:原始UTF-8编码的字节流被错误使用*Latin-1(ISO-8859-1)*单字节编码解码为字符串,才会出现💖类乱码,以及转义后可见\xf0\x9f\x92\x96这类UTF-8字节特征的内容。
核心实现代码
Python3中仅需两步即可完成修复:
- 将乱码字符串用
latin-1编码转回原始字节流 - 用
utf-8重新解码字节流,得到正确字符串
def fix_encoding_error(broken_text: str) -> str: # 还原原始字节流 raw_bytes = broken_text.encode('latin-1') # 用utf-8正确解码,errors参数可选,用于处理异常编码内容 return raw_bytes.decode('utf-8', errors='replace')
测试验证
测试样例1:单emoji场景
输入:'i love you 💖'
调用代码:
test1 = 'i love you 💖' print(fix_encoding_error(test1))
输出结果:i love you 💖
测试样例2:多emoji场景
输入:'i love you \xf0\x9f\x92\x96\xf0\x9f\x92\x96'
调用代码输出:i love you 💖💖
测试样例3:长文本乱码场景
你提供的带乱码的推文内容,调用上述方法后会自动还原所有emoji,无乱码。
内容的提问来源于stack exchange,提问作者Peter Lo
相关产品推荐
相关产品推荐

