更改HttpServletResponse的编码

我有一个返回XML的API,它实际上使用默认编码返回它(我相信它是UTF-8),但现在需求已经改变,我们需要返回UTF-16LE中的所有内容。

我的问题是:有一种简单的方法吗? 我可以在呼叫完成之前访问响应,所以我想知道我是否可以做类似的事情

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

非常感谢!

更新:提到的方法是使用的方法。 我使用的是不包含它的servlet API的旧版本(2.3)。 更改版本修复了所有问题。

呃,这个方法确实存在了

设置发送到客户端的响应的字符编码(MIME字符集),例如,设置为UTF-8。 如果字符编码已由setContentType(java.lang.String)或setLocale(java.util.Locale)设置,则此方法将覆盖它。 使用text / html的String调用setContentType(java.lang.String)并使用UTF-8的String调用此方法与调用带有text / html的String的setContentType相同; 字符集= UTF-8。

正如其他人所说,使用:

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

要么:

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

…但请确保调用response.getWriter() 之前执行此操作; …!

第一

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

然后,确保你实际上发出了那个编码!

只需做以下事情:

 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();