【发布时间】:2025-12-26 18:25:07
【问题描述】:
当数据是 unicode 并且我得到时,Play 拒绝接受 POST 请求:
解析应用程序/x-www-form-urlencoded 时出错
我的印象是一切都很好,直到我尝试使用希伯来语而不是英语的文本请求,所以使用
的请求value=hey
工作正常,但有
的请求value=%u05D4%u05D9%u05D9
失败。
我找到了something about it,但他说他通过更改 play/api/mvc/ContentType.scala 使其工作,这是我想避免的。
有什么想法吗?
谢谢!
编辑
我知道编码不符合 application/x-www-form-urlencoded 的标准,但这是我需要处理的情况,目前无法更改客户端,它使用 javascript escape 方法。
我正在寻找后端方面的解决方案,即 Play 解决方案。
找到一个可以在 java 中实现的解决方案会很好,但现在看起来解决方案是编写我自己的 BodyParser(在 scala 中)。
【问题讨论】:
-
我从未见过那种特殊的编码方式——你有参考建议它应该可以工作吗?
-
我们正在使用我们拥有的旧系统,当 Play 代理它时会发生此特定错误。它使用 Flask 并且在这方面没有问题,flask 接受这种编码。我在转义后写的是希伯来语中的“嘿”:
escape("היי") -
这并不能真正回答我的问题。支持它的一件事并不意味着它是一种标准的做事方式......
-
嗯,在将字符串发送到服务器之前转义字符串是一种常见做法,因为除此之外没有其他文本操作,我认为它符合标准,不是吗?
-
是的,转义是常见的做法——但我之前没有见过
%u表单或 URL 编码。这就是为什么我要求参考它。 Wikipedia 建议使用 UTF-8 八位字节序列的普通%xx编码通常会更好。
标签: java post playframework playframework-2.0