python - Bottle 将 post 请求转换为 unicode

标签 python unicode bottle

我有一个服务器作为应用程序,除了保存 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/

相关文章:

python - 单击桌面图标在 Raspbian 中执行 python 脚本

python - 元组在赋值中解包

python - 具有非标准字符到 int 的十六进制转储(字节数组)

unicode - 连接 net.Addr 和 []rune

python - 将表单字段插入数据库(Bottle、sqlite)

python - 让 random_powerlaw_tree() 生成节点数超过 10 的树的参数

unicode - 如何组合两个 Unicode 符号来创建一个新符号?

c - printf 字段宽度 : bytes or chars?

python - 酒瓶 : template not found

jquery - 使用 AJAX 使用 Bottle 上传文件