接收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]
'ã'
答案 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'
您的tc
是str
对象,而不是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]: こんにちは