RESTeasy возвращает другую кодировку символов JSON (P)

#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