python 运行.py文件 一加上decode()就报错。。
PHP中文网
PHP中文网 2017-04-18 09:21:47
0
3
465

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中文网

认证高级PHP讲师

répondre à tous(3)
阿神

décoder, c'est décoder.
Cela n'a rien à voir avec l'encodage du fichier websercer1.py.

request.decode('encoding') #fait référence à l'encodage que vous utilisez pour décoder la requête...

Votre erreur a peut-être été codée en UTF-8

伊谢尔伦

Bien que vous soyez sûr qu'il s'agit d'un encodage UTF-8, je vous suggère de l'enregistrer d'abord dans un fichier txt et d'y jeter un œil.
Une méthode stupide que j'utilise souvent pour explorer les données consiste à écrire des choses en txt sans réfléchir et sans réfléchir. regarde à l'intérieur. Qu'est-ce que c'est ? C'est mieux pour le débogage

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

Si le format utf-8 des codecs ne peut pas être enregistré au format txt, alors votre contenu ne doit pas être utf-8

迷茫

Votre encodage est à l'origine UTF-8, il n'est donc pas nécessaire d'encoder ou de décoder. Cet encodage est redondant (et vous l'avez également mal écrit, vous devez d'abord décoder, puis encoder, il est donc redondant)
http_response = """HTTP/1.1 200 OK Bonjour, Monde!""".decode (' utf-8').encode("utf-8")
Cela n'a finalement pas fonctionné. Il se peut qu'il y ait un problème avec le code du socket. Veuillez vérifier à nouveau

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal