Python 套接字编码问题

Python encoding issue through sockets

我正在创建一个简短的 python 脚本,它需要我通过套接字在两台计算机之间来回发送文本。现在,当我尝试使用 telnet 在同一台计算机上本地测试我的应用程序时,它要求我在使用 bytes() 函数时使用 'utf-8' 编码:

connection.sendall(bytes("Unknown command", 'UTF-8'))

在本地一切正常,但是当我尝试在 raspberry pi 上远程测试我的应用程序并通过 telnet 连接我的计算机时,出现以下错误

TypeError: str() takes at most 1 argument (2 given)

经过一些研究,我发现如果我删除 utf 编码,它将像这样远程工作:

connection.sendall(bytes("Unknown command"))

但是当我在本地测试时,这会导致错误。它说我必须使用编码。为什么会这样?

您正在使用两个不同版本的 python py2 vs 3

Python2:

In [1]: bytes("Unknown command", 'UTF-8') 
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-ddc681192da0> in <module>()
----> 1 bytes("Unknown command", 'UTF-8')

TypeError: str() takes at most 1 argument (2 given)

Python3:

In [1]: bytes("Unknown command", 'UTF-8')
Out[1]: b'Unknown command'