Change encoding of HttpServletResponse

Viewed 74138

I have an API that returns XML, it actually returns it using the default encoding (I believe it's UTF-8), but now requirements have changed and we need to return everything in UTF-16LE.

My question is: is there an easy way of doing this? I have access to the response just before the calls complete so I was wondering if I could do something like

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

Thanks a lot!

UPDATE: The method mentioned is the one to use. I was using an old version (2.3) of the servlet API that did not include it. Changing the version fixed it all.

5 Answers

I found that you MUST set the character encoding to at least UTF-8 because the default is ISO-8859-1. The ISO-8859-1 character set doesn't account for some extended characters. I wrote a helper function to use what is sent in the "Accept" header:

public static void setResponseCharacterSet(HttpServletRequest request, HttpServletResponse response)
{
    String type = "UTF-8";
    if(request.getHeader("accept") != null)
    {
        String[] params = request.getHeader("accept").split("charset=");
        if(params.length == 2) {
            type = params[1];
        }
    }
    response.setCharacterEncoding(type);
}
Related