根据发送请求在 flask 中更改 flask.app.request_class

Change flask.app.request_class in flask according to sending request

从客户端发送数据(名称字段编码 'euc-kr'),POST http://127.0.0.1,name=테스트&charset=euc-kr

在服务器(基于 flask)中接收数据,但只有 Unicode 和损坏的显示。

@app.route('/', methods='post'):
def post():
     print request.charset #utf-8
     print request.url_charset #utf-8

     print type(request.form['name']) #unicode

所以我使用 Flask.Requsest class 的 subclass 来支持字符集:

# main.py 
class EuckrRequest(Request):
    url_charset = 'euc-kr'
    charset = 'euc-kr'

app = Flask(__name__, static_url_path='', static_folder='static')
app.request_class=EuckrRequest

非常好而且没有损坏显示。但是我想根据POST数据中的charset改变app.request_class

如何修改代码? app.request_context?, app.before_request?

动态更改请求 class 是错误的做法, 因为请求 class 很早就开始实例化

我建议您联系 request.environ 并根据收到的数据明确处理详细信息

我用request.get_data()

解决
   import urllib
   urllib.unquote(request.get_data()).decode('euc-kr')