article Annuaire
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.body
Est une binary
variable bien qu'il puisse être décodé en utf8
mais 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é form
forment les paramètres, comme suit:
<form action="/" method="post" accept-charset="UTF-8" enctype="application/x-www-form-urlencoded">
</form>
Back-end post
processus 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
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:
Mais il y a d'autres questions:
- le corps plus que le délimiteur spécifique, telles que la forme
------WebKitFormBoundarySUFFIX
, dans lequel chacun des premier poteau,SUFFIX
va changer - Si vous avez du contenu, le corps sera plus qu'un
Content-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.