[英]Python encode() doesn't work?
我試過encode()
,它不起作用。 我不斷收到TypeError: must be str, not bytes
因為通常我會得到TypeError: a bytes-like object is required, not 'str'
。
ip = socket.gethostbyname("google.com")
port = 80
robot = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
payload = "Hello world"
try:
robot.connect((ip, port)))
robot.send('GET '+payload.encode()+' HTTP/1.1\n\n')
except socket.error:
print("connection lost")
robot.close()
我不明白我做錯了什么?
如果查看socket.send
的文檔, socket.send
可以看到第一個參數是bytes
而不是字符串。 您encode
字符串與特定的編碼把它變成字節,你decode
與特定編碼的字節把它們變成一個字符串:
robot.send(b'GET ' + payload.encode() + b' HTTP/1.1\n\n')
str.encode
和str.decode
默認為utf-8
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.