python3字节构造添加了奇特的字节

时间:2018-07-20 01:40:39

标签: python-3.x

我是python 3的新手。我通过网络发送字节。 当我发送s.send(b'\x8f\x35\x4a\x5f")并查看堆栈跟踪时,我只会看到5f4a358f

但是,如果我创建一个变量:

test=(['\x8f\x35\x4a\x5f'])
print(str(''.join(test).encode()))

我收到b'\xc2\x8f5J_' 如您所见,还有一个额外的字节/xc2

我的问题有两个: 1)为什么在使用str.encode()将字符串编码为已经“编码”的字节时,为什么增加了一个额外的字节/ xc2而文字字节字符串b'\ x8f \ x35 \ x4a \ x5f'没有额外的编码是添加? 2)如果我将字节传递到用作缓冲区的变量中,该变量用作通过套接字发送数据的缓冲区,那么如何以编程方式创建和发送一组文字字节(例如b'),从而不添加/ xc2字节当通过电线发送时?

谢谢大家的时间!我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

因为它不是 编码的;它是由U + 008F U + 0035 U + 004A U + 005F组成的文本。然后在对其进行编码时(默认为UTF-8),将添加额外的字节。首先使用bytes,或编码为Latin-1。但是请使用bytes