2016-07-31 50 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'並寫入它,編碼不會影響響應的主體,只會影響頭部。 –