如何解码字符串b'Katastr\xc3\xa1ln\xc3\xad mapa'?尝试方法未成功
解决bytes对象解码问题:从
b'Katastr\xc3\xa1ln\xc3\xad mapa'到正确字符串 嘿,你这操作完全搞反逻辑啦!你手里的b'Katastr\xc3\xa1ln\xc3\xad mapa'是一个UTF-8编码的bytes对象,你需要做的是解码(把字节转成人类可读的字符串),而不是先转成字符串再编码回字节——这就是为什么你用str(htmlContent).encode('utf-8')后结果还是和原来一样的原因,相当于绕了个无用的圈子。
正确的解码方法
直接对bytes对象调用decode()方法(指定UTF-8编码,因为这个bytes明显是UTF-8格式的):
# 假设你的bytes对象是这个 html_content = b'Katastr\xc3\xa1ln\xc3\xad mapa' # 解码成字符串 decoded_str = html_content.decode('utf-8') print(decoded_str) # 输出:Katastrální mapa
或者你也可以用更简洁的写法,直接把bytes对象转成字符串时指定编码:
decoded_str = str(html_content, 'utf-8')
为什么你的方法没用?
当你调用str(html_content)时,得到的其实是bytes对象的字符串表示,也就是类似"b'Katastr\\xc3\\xa1ln\\xc3\\xad mapa'"这样的字符串,再对这个字符串执行encode('utf-8'),得到的是这个表示字符串的bytes,而不是你想要的原内容解码结果——不过你说结果还是原来的bytes,可能是你在操作时混淆了变量,但核心问题还是搞反了解码和编码的方向。
另外补充一句:这个bytes里的\xc3\xa1是字符á的UTF-8编码,\xc3\xad是í的UTF-8编码,所以用UTF-8解码肯定是正确的。
内容的提问来源于stack exchange,提问作者Žanet
相关产品推荐
相关产品推荐

