更改 HttpServletResponse 的编码

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

我的问题是:有没有一种简单的方法来做到这一点?我可以在呼叫完成之前访问响应,所以我想知道我是否可以做这样的事情

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

多谢!

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


答案 1

呃,方法确实存在,在这里

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


答案 2

正如其他人所说,使用以下任一方法:

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

艺术

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

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


推荐