Tomcat无法解码URL编码字符串

3

我正在使用以下方法对数据进行URL编码,然后从我的iPhone应用程序向jsp页面(Tomcat后面)发送数据:


- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc NS_AVAILABLE(10_3, 2_0);

使用的字符串编码作为参数:NSUTF8StringEncoding

但是某种方式数据被错误地解码了。

Sample Text : ¥£€>€£

Encoded: %C2%A5%C2%A3%E2%82%AC%3E%E2%82%AC%C2%A3

Received on Cell As SMS: ¥ £ Φ > Φ  £

所以,似乎有一些字符没有被编码/解码。

有什么想法,我漏掉了什么?

2个回答

8
URI被编码为UTF-8,但Tomcat将其解码为ISO-8859-1。您需要编辑server.xml中的连接器设置,并添加URIEncoding="UTF-8"属性。

我在server.xml中添加了这个,并且在请求头中设置了Charset="UTF-8"的值,它完美地工作了。 - Ansari

0
如果您正在使用Spring并且使用characterEncodingFilter,请参考McDowell的答案,并记得将您的url-pattern设置为"/*"。在我的情况下,它被设置为*.do。
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接