0

我有一个采用 HTTP GET 参数的 REST Web 服务(Java-Spring)。参数可以包含一些本地数据,例如挪威或德国名称或街道:例如 street=Rübenkamp

我想知道是否有一个标准协议来定义 REST WebService 及其客户端必须如何处理本地/特殊字符?

我正在寻找的是一般准则,例如:

  1. 客户端需要使用 UTF-8/16 对查询参数值进行编码
  2. 在服务器端,参数值必须首先使用 XXX 上可用的编码进行解码(请求参数?)
  3. 当服务器响应时,它首先需要使用 UTF-8/16 对参数值进行编码,并将编码放入某些标头等中

以上有什么规律吗?

逃生规则也是受欢迎的。

4

2 回答 2

1

使用org.springframework.web.filter.CharacterEncodingFilter

 <filter>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

这必须是要执行的第一个过滤器。

同样在您的 HTMl 标头中,您希望指定 char 编码,然后您将不需要手动进行编码或解码。

还要通过http://forum.springsource.org/showthread.php?14063-How-to-set-setCharacterEncoding-on-Request

于 2013-05-07T14:45:09.587 回答
0

POST 和 GET 参数通常对应于请求发送者的 Charset 设置。因此,为了确保发件人不使用一些奇异的设置,您可以强制它以 UTF-8 格式发送请求(顺便说一句,几乎在所有情况下都推荐使用这种设置):

request.setCharacterEncoding("UTF-8");
or
request.setContentType("text/html; charset=UTF-8")

如果您不能强制客户端使用 UTF-8 作为编码,那么您可能必须检查它使用的编码是否与 UTF-8 兼容并“翻译”它

request.getCharacterEncoding().equals("UTF-8");
于 2013-05-07T14:52:28.867 回答