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

时间:2015-06-24 06:24:34

标签: character-encoding flask

从客户端发送数据(名称字段为encoed' 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类的子类来支持charset:

# 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数据中的app.request_class更改charset

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

2 个答案:

答案 0 :(得分:1)

动态更改请求类是错误的方法, 因为请求类很早就以

开始实例化了

我建议您进入request.environ并明确处理来自

中的数据的详细信息

答案 1 :(得分:0)

我解决了使用 import urllib urllib.unquote(request.get_data()).decode('euc-kr')

{{1}}