2016-07-31 47 views
1

我已经了解到,通常,Java使用UTF-16作为内部字符串表示。
我的问题是在Java中编写响应并应用不同的char编码时发生的实际情况, response.setCharacterEncoding("ISO-8859-1")Servlet HttpServletResponse :: setCharacterEncoding()如何工作?

是否真正从UTF-16ISO-8859-1或者它只是增加了一些元数据响应对象转换响应的主体的字节?

+1

如果您可以确切地说出您正在谈论的是哪一堂课,这将有所帮助。 –

+0

@BalusC你能解释为什么它不是Java的questoin? – itamar

+1

这是一个Servlet API问题,而不是Java SE API问题。只对[Java]标记仅适用于用'main()'方法显示的普通Java应用程序类的问题和/或对JLS负责的问题。 – BalusC

回答

0

我假设你正在谈论一个沿着HttpServletResponse行的类。如果是这种情况,那么是的,它会改变响应的主体,如果你打电话给getWriter。由它返回的作者必须将写入它的任何字符串转换为字节,并使用编码。

如果已经设置了内容类型,那么设置内容编码将通过Content-Type标头可以提供该信息。具体根据ServletResponse docs

调用带的text/html字符串的setContentType(java.lang.String中)和调用该方法与UTF-8字符串相当于与调用的setContentType与text/html; charset=UTF-8字符串。

+0

如果你打电话给getWriter,你是什么意思? – itamar

+0

@itamar:好吧,如果你只是调用'getOutputStream'并写入它,编码不会影响响应的主体,只会影响头部。 –