【问题标题】:PlayFramework handling of special characters in HTTP headerPlayFramework 处理 HTTP 标头中的特殊字符
【发布时间】:2017-07-12 01:58:15
【问题描述】:

当我通过 HTTP 标头值发送 â 等特殊字符时,我得到一个不同的 unicode 字符 request().getHeader()

我知道不建议通过 HTTP 标头发送特殊字符,但这是我的要求,首先我认为这是因为 JVM 编码未设置为 UTF-8。但即使在设置后我也遇到了同样的问题。

我看到有人问过类似的问题:

Play Framework Unicode symbols in HTTP Header

但还没有得到答案。

【问题讨论】:

    标签: java unicode playframework


    【解决方案1】:

    这不是关于 Play 或 Java,而是关于 HTTP 标准。您需要对这些字符进行编码,无法保证在 HTTP 标头中发送非 ASCII 字符。

    How to send non-English unicode string using HTTP header?

    Illegal characters in HTTP headers

    Sending non-ASCII text in Http POST header

    What character encoding should I use for a HTTP header?

    即使是 RFC5987:

    handling filename* parameters with spaces via RFC 5987 results in '+' in filenames

    【讨论】:

    • 是的,我了解 HTTP 标准。但我发现 Jetty 服务器尊重 file.encoding 设置,即使是 HTTP 标头也是如此。但是 Netty 服务器严格遵守 HTTP 标准。我认为对我来说唯一的出路就是使用 base64 对其进行编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 2012-11-14
    • 2012-09-18
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多