如何将Flask的request.get_data()中的原始数据解析为汉字?

时间:2019-07-31 08:07:36

标签: python http flask request

我正在使用Flask构建一个通过POST方法处理一些中文请求的Web服务器。最初,我考虑使用request.form['body']来获取内容,但是,由于客户端编码位于BIG5中,因此总是使用{{ 1}},因此我必须使用Flask.request.form从请求中检索原始数据并自行解码。

但是奇怪的是,当UTF-8一切都很好时,我可以使用request.get_data()来获取正确的字符,但是当我未指定将使用enctype = multipart/form-data的enctype时默认情况下,返回值如下:

  

结果1。

request.get_data().decode('big5')

不是“ BIG5”编码的,原始文本应如下所示:

  

结果2。

application/x-www-form-urlencoded

“ BIG5”编码的编码应如下所示:

  

结果3。

%B6W%C3%D9%A4u%B5%7B%A6%B3%AD%AD%A4%BD%A5q

我的问题是使用超贊工程有限公司 时如何正确地将格式数据从Result1解码到Result2?

如果内容类型等于xb6W\xc3\xd9\xa4u\xb5{\xa6\xb3\xad\xad\xa4\xbd\xa5q ,则代码和结果如下: enter image description here

如果内容类型等于application/x-www-form-urlencoded,则代码和结果如下: enter image description here

1 个答案:

答案 0 :(得分:1)

您将获得一个URL编码的字符串。使用urllib对其进行解码:

import urllib
data = '%B6W%C3%D9%A4u%B5%7B%A6%B3%AD%AD%A4%BD%A5q'
print(urllib.parse.unquote(data, encoding='big5'))

这将打印超贊工程有限公司,看起来像您的预期输出。