Изменение кодировки HttpServletResponse

У меня есть API, который возвращает XML, он фактически возвращает его с использованием кодировки по умолчанию (я считаю, это UTF-8), но теперь требования изменились, и нам нужно вернуть все в UTF-16LE.

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

//This method does not exist
response.setCharacterEncoding("UTF-16LE");

Спасибо большое!

UPDATE: Указанный метод - тот, который нужно использовать. Я использовал старую версию (2.3) API сервлета, которая не включала его. Изменение версии исправлено.

Ответы

Ответ 1

Uhh, метод существует, здесь

Устанавливает кодировку символов (MIME charset) ответа, отправляемого на клиент, например, для UTF-8. Если кодировка символов уже были установлены setContentType (java.lang.String) или setLocale (java.util.Locale), это метод переопределяет его. призвание setContentType (java.lang.String) с Строка текста /html и вызов этот метод со строкой UTF-8 эквивалентно вызову setContentType с строкой текст /html; кодировка = UTF-8.

Ответ 2

Как указывали другие, используйте либо:

response.setCharacterEncoding("UTF-16LE");

или

response.setHeader("Content-Type", "text/xml; charset=UTF-16LE");

... но убедитесь, что вы делаете это до вызова response.getWriter();...

Ответ 3

Первая

response.setHeader("Content-Type", "text/xml; charset=UTF-16LE");

Затем убедитесь, что вы действительно испускаете эту кодировку!

Ответ 4

просто выполните следующее:

byte[] k =xml.getBytes("UTF-16"); // xml is the string with unicode content.  getBytes("UTF-16") encodes given String into a sequence of bytes and returns an array of bytes. you can use xml.getBytes(UTF8_CHARSET); for utf-8 encoding

response.setContentType("text/xml");
response.setContentLength(k.length);
response.getOutputStream().write(k);
response.getOutputStream().flush();
response.getOutputStream().close();