Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu438

membalas semua(3)saya akan balas

  • 阿神

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

    nyahkod ialah penyahkodan.
    Ia tiada kaitan dengan pengekodan fail websercer1.py.

    request.decode('encoding') #merujuk kepada pengekodan yang anda gunakan untuk menyahkod permintaan...

    Ralat anda mungkin telah dikodkan dalam UTF-8

    balas
    0
  • 伊谢尔伦

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

    Walaupun anda pasti ia adalah pengekodan UTF-8, saya cadangkan anda menyimpannya ke fail txt dahulu dan lihat
    Kaedah bodoh yang sering saya gunakan untuk merangkak data ialah menulis sesuatu ke dalam txt tanpa berfikir dan lihat ke dalam. Apakah ini?

    import codecs
    with codecs.open('abc.txt','w','utf-8') as f:
        #do your encode decode    
        f.write(request) # 可能是request.content? request.text?
       
    #then do something with abc.txt

    Jika format utf-8 codec tidak boleh disimpan sebagai txt, maka kandungan anda tidak seharusnya utf-8

    balas
    0
  • 迷茫

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

    Pengekodan anda pada asalnya adalah UTF-8, jadi tidak perlu mengekod atau menyahkod. Pengekodan itu adalah berlebihan, (dan anda juga salah menulisnya, anda perlu menyahkod dahulu, dan kemudian mengekod, jadi ia adalah berlebihan)
    http_response = """HTTP/1.1 200 OK Hello, World!""".decode (' utf-8').encode("utf-8")
    Akhirnya mungkin ada masalah dengan kod soket. Sila semak semula

    balas
    0
  • Batalbalas