如何将字符串类型接收到的原始字节类型数据转换为字节类型?

时间:2019-07-30 00:58:07

标签: python-3.6

接收UTF-8编码的二进制数据字符串作为文本数据。我想将接收到的文本数据转换为原始的二进制数据字符串。

我认为最好一次读取一个字节的文本数据并将其转换为二进制数据,但是文本数据的第一个字节'\ xe3'变为'ã'。

原始数据示例为:

>>> t = 'こんにちは'
>>> t.encode()
b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

收到的数据是:

>>> tc = '\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'
>>> tc
'ã\x81\x93ã\x82\x93ã\x81«ã\x81¡ã\x81¯'
>>> tc[0]
'ã'

2 个答案:

答案 0 :(得分:0)

您可以使用decode()函数对字节数据进行解码,例如:

In [1]: t = 'こんにちは'

In [2]: t.encode()
Out[2]: b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

In [3]: tc = t.encode()

In [4]: tc.decode()
Out[4]: 'こんにちは'

希望有帮助。

答案 1 :(得分:0)

这是诀窍。

In [1]: tc = '\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

您的tcstr对象,而不是bytes。但是它代表的是一系列字节。因此,首先,您将其编码为latin1,从而得到:

In [2]: tc.encode('latin1')
Out[2]: b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

除了是字节字符串外,它是相同的字符串。 (请参阅上一页b)现在,您可以将此字节字符串解码为utf-8,

In [3]: tc.encode('latin1').decode('utf8')
Out[3]: こんにちは
相关问题