Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用unicode处理无法解码为utf-8的网络消息_Python_Python 3.x_Character Encoding - Fatal编程技术网

Python 如何使用unicode处理无法解码为utf-8的网络消息

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

我通过套接字连接收到以下字节消息,我想将其转换为字符串并使用python3.7进行进一步处理

下面是我到目前为止尝试的代码

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检测器:还可以为它提供建议,建议先尝试哪些编码,不尝试对其进行微调

更多信息请参见:


代码为我成功运行,编码为class='latin1'。试试
b=codecs.decode(a,'latin1')
Wow,我不知道
beautifulsou
可以用来查找字节对象的编码格式。@Cav你甚至可以单独使用特殊的部分来完成它-参见我编辑成answer的docu链接
windows-1252