les données chinoises de traitement soumission du formulaire tornade

contexte description de

L'extrémité avant à travers une forme de données soumis avec les Chinois, la fin arrière veut traiter les données. request.bodyEst une binaryvariable bien qu'il puisse être décodé en utf8mais pas encore sous forme chinoise, semblable à

%E8%BF%98%E6%AC%BE%E6%88%90%E5%8A%9F%E9%A1%B5

Après vérifié la réponse pertinente, je trouve un moyen viable de regarder cet enregistrement.

solutions

L'extrémité avant du fichier HTML spécifié formforment les paramètres, comme suit:

<form action="/" method="post" accept-charset="UTF-8" enctype="application/x-www-form-urlencoded">
</form>

Back-end postprocessus est le suivant:

import tornado
import urllib.parse

class MyTestHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('test.html')

    def post(self):
        body = self.request.body.decode('utf8')
        body = urllib.parse.unquote(body)
        print(body)
        # something else
        # self.render('test.html')

Mes résultats frontaux des deux entrées de texte chinois
Insérer ici l'image Description
résultats sont les suivants:

文案内容_0=这是一个测试文案&文案内容_1=这是另一个测试文案

notes d'étude

Note enctype cet argument, comme je l' utilise que multipart/form-data, mais l'analyse syntaxique réelle , il a constaté que , bien que les Chinois peuvent montrer des résultats similaires:
Insérer ici l'image Description

Mais il y a d'autres questions:

  1. le corps plus que le délimiteur spécifique, telles que la forme ------WebKitFormBoundarySUFFIX, dans lequel chacun des premier poteau, SUFFIXva changer
  2. Si vous avez du contenu, le corps sera plus qu'unContent-Disposition: form-data;

En fait, cela est une question sur le traitement du protocole http, je n'ai plus d' informations. Je trouve ce blog de finition très concis.

Publié 120 articles originaux · Praise gagné 35 · vues 170 000 +

Je suppose que tu aimes

Origine blog.csdn.net/u012328476/article/details/104388965
conseillé
Classement