【问题标题】:How can a server know which character encoding the query string is using in a GET request?服务器如何知道查询字符串在 GET 请求中使用的字符编码?
【发布时间】:2016-04-23 17:58:10
【问题描述】:

我最近遇到了一些关于字符编码的问题。 当我尝试触发 HTTP GET 请求时,该请求在查询字符串中包含一些非 ascii 字符,我发现服务器无法正确解码参数。

我目前的解决方案是配置tomcat的server.xml,在<Connector>元素中添加属性URIEncoding="utf-8"。 好吧,它解决了问题。但我的问题是:如果 URL 没有用 utf-8 编码怎么办?(就像一些 ANSI 编码一样,你可以这样做,对吗?)

除了设置一个固定值之外,服务器有没有办法弄清楚 URL 使用的是什么编码?

PS:我知道一些字符编码的基础知识以及 UTF-8 和 Unicode 之间的区别。

【问题讨论】:

  • This SO question 处理该问题。标准要求 url 以 8859-1 表示 - 但是,将百分比编码应用于 utf-8 八位字节序列,这不是限制。共识似乎是要走的路。

标签: http unicode encoding utf-8


【解决方案1】:

服务器规定它将接受的(百分比编码的)URL 到其资源的字符集。如果客户端以错误的字符集发送 URL,它将无法正常工作。但是,没有协议允许服务器公布其所需的字符集。所以它有点像第 22 条规则。如果 URL 源自 HTML 页面,请使用 HTML 的字符集。否则你只需要猜测,如果服务器不接受 UTF-8,你可能会猜错。

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 2020-12-02
    • 2017-07-31
    • 1970-01-01
    • 2010-10-01
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多