Python 如何使用unicode处理无法解码为utf-8的网络消息
我通过套接字连接收到以下字节消息,我想将其转换为字符串并使用python3.7进行进一步处理 下面是我到目前为止尝试的代码Python 如何使用unicode处理无法解码为utf-8的网络消息,python,python-3.x,character-encoding,Python,Python 3.x,Character Encoding,我通过套接字连接收到以下字节消息,我想将其转换为字符串并使用python3.7进行进一步处理 下面是我到目前为止尝试的代码 import codecs a = b'0400F224648188E0801200000040000000001941678904000010237890000000000000222220418151856038556051259950760020806002468060046010403319 HSBCBSB8001101234567890MC 100
import codecs
a = b'0400F224648188E0801200000040000000001941678904000010237890000000000000222220418151856038556051259950760020806002468060046010403319 HSBCBSB8001101234567890MC 100 WITH ORDERIN FO AU009006Q\x00\x00\x00\x83\x00007\xa0\x00\x00\x00\x00%\x02010003855604181518562468000000000460100000'
b= codecs.decode(a, 'utf-8')
print(b)
我得到的错误如下
> UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position > 208: invalid start byte
如何将数据转换为字符串并进一步处理
提前感谢您的数据不是utf-8编码的。您可以使用BeautifulSoup对未知编码进行解码:
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(b'0400F224648188E0801200000040000000001941678904000010237890000000000000222220418151856038556051259950760020806002468060046010403319 HSBCBSB8001101234567890MC 100 WITH ORDERIN FO AU009006Q\x00\x00\x00\x83\x00007\xa0\x00\x00\x00\x00%\x02010003855604181518562468000000000460100000'
)
print(soup.contents[0])
print(soup.originalEncoding)
得到
0400F224648188E0801200000040000 ... # etc
及
您也可以单独使用bs4检测器:还可以为它提供建议,建议先尝试哪些编码,不尝试对其进行微调 更多信息请参见:
b=codecs.decode(a,'latin1')
Wow,我不知道beautifulsou
可以用来查找字节对象的编码格式。@Cav你甚至可以单独使用特殊的部分来完成它-参见我编辑成answer的docu链接
windows-1252