编码用于REST WS的解码变音符号

时间:2013-05-07 14:36:41

标签: java spring rest encoding urlencode

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

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

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

  1. 客户端需要使用UTF-8/16
  2. 对查询参数值进行编码
  3. 在服务器端,必须首先使用XXX上的可用编码解码参数值(请求参数?)
  4. 当服务器响应时,首先需要使用UTF-8/16对参数值进行编码,并将编码放在某个标题中等。
  5. 以上是否有任何规则?

    欢迎逃生规则。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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");
相关问题