Как проверить, закодирован ли мой запрос - ответ? - PullRequest
2 голосов
/ 27 марта 2012

Это может быть очевидным вопросом. Но я не сталкивался с этим сценарием раньше. В моем приложении Spring MVC у меня есть следующая конфигурация в web.xml.

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

Передача данных между браузером и сервером происходит через JSON с использованием Jackson Mapper. Заголовки запроса - ответа, как в Firebug, приведены ниже:

Response headers
Content-Type    application/json;charset=UTF-8
Server          Apache
Transfer-Encoding   chunked

Request Headers
Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Cache-Control   no-cache
Connection  keep-alive
Content-Length  0
Content-Type    application/json; charset=utf-8

Значит ли это, что запрос-ответ правильно закодирован? Является ли просмотр заголовков единственным способом определения используемой кодировки?

UPDATE

Если, как Polve упоминает ниже, настройки влияют только на интерпретацию как UTF-8, то что мне делать для кодирования моего ответа в Spring MVC?

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

CharacterEncodingFilter только устанавливает кодировку, которую вы хотите, чтобы другая сторона интерпретировала ответ (или запрос), как.

В запросе не говорится, что вы хотите UTF-8 через Accept-Charset , поэтому клиент может отправлять все, что он хочет, и ваш фильтр говорит, что вы будете интерпретировать его как utf-8, даже если клиент указал другую кодировку ( forceEncoding = true ).

Так что нет, это не означает, что ваш запрос правильно закодирован , он говорит, что вы должны интерпретировать то, что приходит как utf-8.

0 голосов
/ 28 марта 2012

В моем конкретном случае я хотел знать, как я буду кодировать свой ответ в приложении Spring MVC, которое использует Джексона для сопоставления с JSON.Оказывается, кодировка по умолчанию в Джексоне - UTF-8.

Для тех, кто хочет узнать больше о кодировке, порекомендует ответ polve выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...