Python中Base64解码遇UnicodeDecodeError问题求助
问题排查与解决
核心问题:你提供的Base64字符串与目标结果不匹配
你当前使用的Base64字符串解码后得到的字节序列开头是0xeb,这和目标iframe代码的UTF-8编码(开头为<,对应字节0x3C)完全不符,因此用UTF-8解码必然报错。ChatGPT能给出正确结果,是因为它大概率忽略了你提供的错误Base64,直接基于你给出的“正确解码结果”反向生成了代码,而非实际解码你提供的字符串。
验证与修正
将你提供的Base64字符串和目标结果对应的正确Base64对比:
- 你提供的字符串开头多了
61(对应字节0x61,即字母a),且后续字节也存在差异 - 目标iframe对应的正确Base64编码为:
PGlmcmFtZSB0aXRsZT0ib2sgdmlkZW8gcGxheWVyIiBzcmM9Ii8vb2sucnUvdmlkZW9lbWJlZC82MzI5MjYyOTM0NjkwP2F1dG9wbGF5PTEiIGlkPSJwbGFjZWhvbGRlciIgYWxsb3d0cmFuc3BhcmVuY3k9InRydWUiIHNjcm9sbGJhcnM9Im5vIiB0cmFuc3BhcmVudD0ieWVzIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImVuY3J5cHRlZC1tZWRpYSAqOyBhdXRvcGxheTsgZnVsbHNjcmVlbiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iNDgwIiBzY3JvbGxpbmc9Ik5vIiAgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg==
可正常运行的Python代码
替换为正确的Base64字符串后,解码即可得到目标内容:
import base64 encoded_string = "PGlmcmFtZSB0aXRsZT0ib2sgdmlkZW8gcGxheWVyIiBzcmM9Ii8vb2sucnUvdmlkZW9lbWJlZC82MzI5MjYyOTM0NjkwP2F1dG9wbGF5PTEiIGlkPSJwbGFjZWhvbGRlciIgYWxsb3d0cmFuc3BhcmVuY3k9InRydWUiIHNjcm9sbGJhcnM9Im5vIiB0cmFuc3BhcmVudD0ieWVzIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImVuY3J5cHRlZC1tZWRpYSAqOyBhdXRvcGxheTsgZnVsbHNjcmVlbiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iNDgwIiBzY3JvbGxpbmc9Ik5vIiAgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg==" decoded_bytes = base64.b64decode(encoded_string) decoded_string = decoded_bytes.decode("utf-8") print(decoded_string)
关于在线工具失败的原因
你提供的Base64解码后的字节序列并非合法的UTF-8文本,因此所有标准Base64解码工具都无法得到你想要的iframe代码。
内容的提问来源于stack exchange,提问作者osama
相关产品推荐
相关产品推荐

