#java #character-encoding #resteasy
#java #кодировка символов #resteasy
Вопрос:
Кто-нибудь знает способ включить выбор набора символов ответа клиентом для RESTeasy? Я работаю с 1.2.1GA. Мои ответы возвращают UTF-8, хотя я не уверен, почему и где это определено, потому что кодировка моей тестовой системы по умолчанию в java — CP1252-something, и аннотации выглядели так:
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
Я безуспешно пытался изменить эти типы сред.
// Add another media type
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, "application/json;charset=iso-8859-1" } )
// Try to always return latin-1 JSON. TESTING ONLY!!!
@Produces( { MediaType.APPLICATION_JSON ";charset=iso-8859-1", MediaType.APPLICATION_XML } )
Я запрашиваю у клиента REST для Firefox установку кодировки в заголовках accept и accept-encoding, и все же я всегда получаю UTF-8 JSON. Но клиент, которому нужны данные, будет включен в веб-страницу latin-1, что вполне… вы знаете. Я не могу на это повлиять. Я бы хотел избежать перекодирования всего этого вручную в JavaScript. Кроме того, решение на стороне сервера кажется мне гораздо более надежным.
Я также попробовал некоторые другие вещи, которые я никогда не ожидал, что они будут работать, например, изменение кодировки символов ответа с помощью фильтра сервлетов и так далее. (Необходимость — мать изобретения. ^^)
Google / the web мало что может предложить по этой теме, поэтому после нескольких часов попыток я прихожу сюда и надеюсь, что кто-нибудь может рассказать мне, как это должно работать, или если это вообще возможно.
Пока, с уважением
С.Франк
Ответ №1:
Динамическое повторное кодирование возвращенного ответа пока не поддерживается: https://issues.jboss.org/browse/RESTEASY-465
Похоже, что при использовании возвращаемых типов JAX-B поддержка ограничена: https://issues.jboss.org/browse/RESTEASY-269