Изменение кодировки 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();