Tomcat不解码URL编码字符串

时间:2011-03-04 18:28:10

标签: iphone tomcat encoding utf-8 uri

我正在从我的iphone应用程序(使用以下方法编码)将URL编码数据发布到jsp页面(Tomcat Behind):

- (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 个答案:

答案 0 :(得分:7)

URI编码为UTF-8,但Tomcat为decoding them as ISO-8859-1。您需要在server.xml中修改连接器设置,然后添加URIEncoding="UTF-8"属性。

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