Tomcat не декодирует кодированную строку URL - PullRequest
3 голосов
/ 04 марта 2011

Я отправляю закодированные данные URL на страницу jsp (Tomcat Behind) из моего приложения для iphone (закодировано с использованием следующего метода):

- (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 ]

7 голосов
/ 05 марта 2011

URI кодируется как UTF-8, но Tomcat декодирует их как ISO-8859-1 .Вам необходимо отредактировать настройки соединителя в server.xml и добавить атрибут URIEncoding="UTF-8".

0 голосов
/ 18 октября 2013

Если вы используете Spring и используете characterEncodingFilter, примите ответ Макдауэлла, а также не забудьте установить свой URL-шаблон на "/ *". В моем случае он был установлен на * .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>
...