我已經瞭解到,通常,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