我有一个REST Web服务(Java-Spring),它接受HTTP GET参数。 参数可以包含一些本地数据,例如挪威或德国名称或街道:例如街道=Rübenkamp
我想知道是否有一个标准协议来定义REST WebService及其客户端如何处理本地/特殊字符?
我正在寻找的是一般准则,例如:
以上是否有任何规则?
欢迎逃生规则。
答案 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");