web-dev-qa-db-ja.com

エンコーディングとサーブレットAPI:setContentTypeまたはsetCharacterEncoding

何が舞台裏にあるのだろう。実際、次のようにエンコードを設定できるようです:

  • response.setContentType("text/html; charset=UTF-8")
  • response.setCharacterEncoding("UTF-8")

違いはなんですか?

29

javadoc は違いについてかなり明確です:

void setCharacterEncoding(String charset)クライアントに送信される応答の文字エンコード(MIME文字セット)を、たとえばUTF-8に設定します。文字エンコーディングがsetContentType(Java.lang.String)またはsetLocale(Java.util.Locale)によってすでに設定されている場合、このメソッドはそれをオーバーライドします。 _text/html_の文字列でsetContentType(Java.lang.String)を呼び出し、UTF-8の文字列でこのメソッドを呼び出すことは、setContentTypeを文字列で呼び出すことと同等です。 _text/html; charset=UTF-8_の.


void setContentType(String type)応答がまだコミットされていない場合、クライアントに送信される応答のコンテンツタイプを設定します。 指定されたコンテンツタイプには、_text/html;charset=UTF-8_などの文字エンコーディング仕様を含めることができます。

33
skaffman