我已经了解到,通常,Java使用UTF-16作为内部字符串表示。
我的问题是在Java中编写响应并应用不同的char编码时发生的实际情况, response.setCharacterEncoding("ISO-8859-1")
。Servlet HttpServletResponse :: setCharacterEncoding()如何工作?
是否真正从UTF-16到ISO-8859-1或者它只是增加了一些元数据响应对象转换响应的主体的字节?
我已经了解到,通常,Java使用UTF-16作为内部字符串表示。
我的问题是在Java中编写响应并应用不同的char编码时发生的实际情况, response.setCharacterEncoding("ISO-8859-1")
。Servlet HttpServletResponse :: setCharacterEncoding()如何工作?
是否真正从UTF-16到ISO-8859-1或者它只是增加了一些元数据响应对象转换响应的主体的字节?
我假设你正在谈论一个沿着HttpServletResponse
行的类。如果是这种情况,那么是的,它会改变响应的主体,如果你打电话给getWriter
。由它返回的作者必须将写入它的任何字符串转换为字节,并使用编码。
如果已经设置了内容类型,那么设置内容编码将也通过Content-Type
标头可以提供该信息。具体根据ServletResponse
docs:
调用带的
text/html
字符串的setContentType(java.lang.String中)和调用该方法与UTF-8
字符串相当于与调用的setContentType与text/html; charset=UTF-8
字符串。
如果你打电话给getWriter,你是什么意思? – itamar
@itamar:好吧,如果你只是调用'getOutputStream'并写入它,编码不会影响响应的主体,只会影响头部。 –
如果您可以确切地说出您正在谈论的是哪一堂课,这将有所帮助。 –
@BalusC你能解释为什么它不是Java的questoin? – itamar
这是一个Servlet API问题,而不是Java SE API问题。只对[Java]标记仅适用于用'main()'方法显示的普通Java应用程序类的问题和/或对JLS负责的问题。 – BalusC