【问题标题】:Python encode() doesn't work?Python 编码()不起作用?
【发布时间】:2018-03-17 00:20:17
【问题描述】:

我试过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()

我不明白我做错了什么?

【问题讨论】:

    标签: python python-3.x httprequest


    【解决方案1】:

    如果您查看socket.send 的文档,您可以看到第一个参数是bytes,而不是字符串。你 encode 一个带有特定编码的字符串将其转换为字节,而你 decode 具有特定编码的字节将它们转换为一个字符串:

    robot.send(b'GET ' + payload.encode() + b' HTTP/1.1\n\n')
    

    str.encodestr.decode 默认为 utf-8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2016-03-31
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多