ホームページ  >  に質問  >  本文

python 运行.py文件 一加上decode()就报错。。

python 运行.py文件 一加上decode()就报错。。

文件如下:

import socket

HOST, PORT = '127.0.0.1', 8888

listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
print ('Serving HTTP on port %s ...' % PORT)
while True:
    client_connection, client_address = listen_socket.accept()
    request = client_connection.recv(1024)
    print (request.decode('utf-8'))

    http_response = """
HTTP/1.1 200 OK

Hello, World!
""".encode("utf-8")
    client_connection.sendall(http_response)
    client_connection.close()

其中的 print (request.decode('utf-8'))不加decode()还能运行,一转码不管decode()括号里面写任何东西或者空着就会报错。。
错误如下所示:

websercer1.py文件我确定是utf-8编码格式的,真心不知道这是什么回事了。。
哪位知道麻烦告知,拜谢。。。

PHP中文网PHP中文网2741日前439

全員に返信(3)返信します

  • 阿神

    阿神2017-04-18 09:23:47

    decode はデコードです。
    websercer1.py ファイルのエンコードとは関係ありません。

    request.decode('encoding') #リクエストのデコードに使用するエンコーディングを参照します...

    エラーは UTF-8 でエンコードされている可能性があります

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:23:47

    それが UTF-8 エンコーディングであることは確かですが、まずそれを txt ファイルに保存して確認することをお勧めします。
    データをクロールするために私がよく使う愚かな方法は、何も考えずに txt に内容を書き込むことです。これはデバッグに適しています。

    リーリー

    コーデックの utf-8 形式を txt として保存できない場合は、コンテンツを utf-8 にするべきではありません

    返事
    0
  • 迷茫

    迷茫2017-04-18 09:23:47

    エンコードは元々 UTF-8 であるため、エンコードまたはデコードする必要はありません。そのエンコードは冗長です (また、書き方も間違っています。最初にデコードしてからエンコードする必要があるため、冗長です)
    http_response = """HTTP/1.1 200 OK Hello, World!""".decode (' utf-8').encode("utf-8")
    最終的には動作しませんでした。ソケットのコードに問題がある可能性がありますので、もう一度確認してください。

    返事
    0
  • キャンセル返事