我正在从我的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: ¥ £ Φ > Φ £
因此,似乎很少有字符不被编码/解码。
任何想法,我缺少什么?
答案 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>