application / x-www-form-urlencoded API中的参数的字符编码(不是表格)

时间:2013-10-15 10:52:10

标签: forms api rest networking urlencode

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

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

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

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

但是,由于 API请求没有相应的表单,因此我们无法推断出服务器接受/需要的字符编码。

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

Related question)(但没有重复)

2 个答案:

答案 0 :(得分:1)

使用以下解决方案之一:

答案 1 :(得分:0)

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

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

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

另见HttpServletRequest - setCharacterEncoding seems to do nothing