我有一个服务器作为应用程序,除了保存 ajax 表单外,一切正常。如果我从 python 脚本中保存 - 使用正确的输入 - 数据将作为 unicode 返回。但是来自js的数据很奇怪:管道上应该只有字节(这是http知道的唯一数据类型),但是bottle显示str(它不是utf-8)并且我无法编码/解码以获得正确的值。在 js 方面,我尝试使用 jquery 和 form.serialise,适用于其他框架。
@post('/agt/save')
def saveagt():
a = Agent({x: request.forms.get(x) for x in request.forms})
print(a.nume, a.nume.encode())
return {'ret': ags.add(a)}
...像“şânşar”这样的名字会变成“ÈânÈar”。
这可能是一个简单的问题,但我想我还没有喝足够的咖啡。
最佳答案
如果有人好奇的话,bottle 不会处理正确的 url。 所以 urllib.parse.unquote(request.body.read().decode()) 解决问题。 或
d = urllib.parse.parse_qs(request.body.read().decode())
a = Agent({x: d[x][0] for x in d})
就我而言。
是不是 Bottle 有问题?或者我应该告诉他解码 URI,但我不知道如何解码?
关于python - Bottle 将 post 请求转换为 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25475530/