2016-07-31 15 views
1

私は一般的にJavaが内部String表現としてUTF-16を使用することを学びました。
Javaでレスポンスを作成し、異なるcharエンコーディングを適用すると、実際に何が起こるのですか? response.setCharacterEncoding("ISO-8859-1")サーブレットHttpServletResponse :: setCharacterEncoding()はどのように機能しますか?

それは実際に ISO-8859-1レスポンスのボディはUTF-16からバイト変換したり、それだけでレスポンスオブジェクトにいくつかのメタデータを追加していますか?

+1

あなたが話しているクラスを正確に言うことができれば助けになります。 –

+0

@BalusCなぜあなたはJavaのクエストインではないのか説明できますか? – itamar

+1

これは、Java SE APIの質問ではなく、Servlet APIに関する質問です。 [java]タグは、 'main()'メソッドを持つプレーンなJavaアプリケーションクラスやJLSで答えることのできる質問にのみ使用してください。 – BalusC

答えて

0

私は、HttpServletResponseの行に沿って動作するクラスについて話していると仮定しています。そうであれば、getWriterに電話すると応答の本文が変更されます。それによって返されるライターは、それに書き込まれた文字列をバイトに変換しなければならず、そのためにエンコーディングが使用されます。

コンテンツタイプを設定した場合、コンテンツのエンコードを設定するととなり、その情報はContent-Typeヘッダーを介して利用できるようになります。 ServletResponse docsあたりのとおり:

text/htmlの文字列とに、setContentType(java.lang.String)を呼び出すとUTF-8の文字列でこのメソッドを呼び出すと、text/html; charset=UTF-8の文字列とに、setContentTypeを呼び出すことと同じです。

+0

「**あなたがgetWriterを呼び出した場合」とはどういう意味ですか? – itamar

+0

@itamar:ちょうど 'getOutputStream'を呼び出してそれを書いても、エンコーディングは応答の本体には影響せず、ヘッダだけに影響します。 –

関連する問題