我正在使用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
,则代码和结果如下:
答案 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'))
这将打印超贊工程有限公司
,看起来像您的预期输出。