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'
我正在创建一个简短的 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'