Change encoding of HttpServletResponse

2019-02-06 04:44发布

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.

4条回答
仙女界的扛把子
2楼-- · 2019-02-06 04:54

just do the following thing:

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();
查看更多
可以哭但决不认输i
3楼-- · 2019-02-06 04:56

As others have stated, use either:

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

or:

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

...but make sure you do this before calling response.getWriter(); ...!

查看更多
贼婆χ
4楼-- · 2019-02-06 04:58

First

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

Then, make sure you're actually emitting that encoding!

查看更多
男人必须洒脱
5楼-- · 2019-02-06 05:02

Uhh, the method does exist, here

Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8. If the character encoding has already been set by setContentType(java.lang.String) or setLocale(java.util.Locale), this method overrides it. Calling setContentType(java.lang.String) with the String of text/html and calling this method with the String of UTF-8 is equivalent with calling setContentType with the String of text/html; charset=UTF-8.

查看更多
登录 后发表回答