リクエストの文字コードを設定します。
<fmt:requestEncoding [value=charsetName]/>
なし。
文字コードがISO-8859-1ではないリクエスト・パラメータ値を正しくデコードできるようにするためには、<fmt:requestEncoding>
アクションを使用して、リクエストの文字コードを設定します。
ほとんどのブラウザはHTTP仕様に準拠しておらず、Content-Typeヘッダーをリクエストに含めることができないため、このアクションが必要になります。
具体的には、<fmt:requestEncoding>アクションの目的は、リクエストの文字コードを、このページを起動するフォームを含むレスポンスの文字コードと同じものに設定することです。フォームを含むレスポンスを生成するページの文字コードがページ・ディレクティブのcontentType属性で指定されていても、ServletResponse.setLocale()をコールすることでページ・ディレクティブに指定された文字コードをオーバーライドしてレスポンスのロケール(および文字コード)を設定するi18n対応書式設定アクションがそのページに含まれていれば、レスポンスの実際のロケール(および文字コード)はページ・ディレクティブで指定された値とは異なる場合があるため、このような処理が必要になります(http://www.jcp.org/aboutJava/communityprocess/first/jsr052/index.html
にある『JavaServer Pages Standard Tag Library 1.0 Specification』の8.4項を参照)。この処理では、JSPコンテナがページの先頭で(ページ・ディレクティブのcontentType属性の値を指定して)ServletResponse.setContentType()をコールした後、ページ内のi18n対応書式設定アクションがServletResponse.setLocale()をコールし、ページの既存の文字コードをオーバーライドするため、ページ内の最後のi18n対応書式設定アクションによって設定されたロケール(および文字コード)が優先されることを前提としています。(このことは、レスポンスが十分な大きさのバッファに格納されることを前提としています。指定したロケールまたはキャラクタ・セットがWriterの構成に影響を与えるためには、ServletResponse.getWriter()より前にServletResponse.setLocale()とServletResponse.setContentType()がコールされる必要があるためです。)
このアクションは、サーブレット・リクエストに対して、value属性に指定した文字コード名でsetCharacterEncoding()メソッドをコールします。明示的に、またはEL式を使用して、パラメータが取得される前にこのアクションを使用する必要があります。
パラメータ値を収集するフォームを生成したページのロケールと文字コードが動的に変更する可能性があって、リクエスト・パラメータの文字コードが事前にわからない場合は、value属性を指定しないでください。この場合、<fmt:requestEncoding>アクションはリクエストのContent-Typeヘッダーにキャラクタ・セットが定義されているかどうかを最初にチェックします。キャラクタ・セットが定義されていない場合、セッション・スコープで検索されたjavax.servlet.jsp.jstl.fmt.request.charsetスコープ変数の文字コードを使用します。このスコープ変数が見つからない場合は、デフォルトの文字コード(ISO-8859-1)が使用されます。
JDeveloperのJSTLタグ・ライブラリについて
リファレンス: JavaServer Pages標準タグ・ライブラリ(JSTL)
Copyright © 1997, 2004, Oracle. All rights reserved.