3

我们能否在 POST 请求中使用 API 中的内容类型(例如 RESTful Web 服务)指定参数的字符编码,如果“是”,如何?application/x-www-form-urlencoded

参数将根据此处指定的算法进行编码:URL-encoded form data

在可以对字符串进行百分比编码(对字节进行操作)之前,需要将它们表示为具有特定字符编码的代码单元流。

对于Forms,此字符编码可以由服务器发送的 Form 属性确定,例如通过_charset_表单数据集中的隐藏条目或accept-charset属性。

但是,由于API 请求没有对应的Form,我们无法推断出服务器接受/期望的字符编码。

看来,唯一合理的编码是 UTF-8。当无法从表单中确定此类字符编码时,这是默认编码。

相关问题)(但没有重复)

4

2 回答 2

1

使用以下解决方案之一:

于 2013-11-06T03:10:32.450 回答
0

不幸的是,浏览器在发送数据时仍然非常愚蠢。这在 JavaEE 5 相关时是一个问题,现在仍然存在——您可以检查浏览器的表单提交数据,您会发现它不包含任何字符集编码信息!

阅读https://docs.oracle.com/cd/E19316-01/819-3669/bnayd/index.html

因此,在大多数情况下,解码表单数据的服务器部分必须神奇地知道编码。如果不需要 UTF-8,简单的解决方案是指定 accept-charset=iso-8859-1。否则指定 accept-charset=utf-8 并确保解码表单数据的服务器部分默认采用 utf-8 .....我想知道在浏览器的请求中添加字符集编码参数并实现它有多难必须指定它 - ffs。这可能是我见过的最愚蠢的事情了。

另请参阅HttpServletRequest - setCharacterEncoding 似乎什么都不做

于 2017-09-11T19:00:01.710 回答