<fmt:requestEncoding>
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
SYNOPSIS
<fmt:requestEncoding
/>
| value="文字エンコーディング" |
説 明
リクエストの文字エンコーディングを設定します。 サーブレット仕様でのデフォルト文字エンコーディングは ISO-8859-1 ですが、この機能に適切な エンコーディングを指定することで ISO-8859-1 以外でエンコードされたリクエストパラメータを 正しく復元することができます。
通常、リクエストパラメータはリクエストを送信したページの文字エンコーディングで送られてきます。
しかしリクエストの受け側では元のページがどのようなエンコーディングだったかは分かりません。
本来ならリクエストの Content-Type ヘッダでパラメータのエンコーディングを指定する
必要がありますが、ほとんどのブラウザはその動作に対応していません。
この動作はリクエストからパラメータを使用する前に行っておく必要があります。 POST メソッドで送られるデータはストリーム形式であり一度しか解析できません。 このため、一度間違ったエンコーディングで復元してしまうと、正しいエンコーディングを指定しても パラメータを再構築できないためです。
またこのタグでエンコーディングを指定しても効果がない場合は、JSP より前のサーブレットフィルタ などでパラメータを参照してしまっている可能性があります。
属 性
使用例
value 属性を省略した場合は
セッションスコープの変数 javax.servlet.jsp.jstl.fmt.request.charset
がリクエストエンコーディングとして使用されます。
JSP
<c:set var="javax.servlet.jsp.jstl.fmt.request.charset" value="MS932" scope="session" /> 前: <%= request.getCharacterEncoding() %><br> <fmt:requestEncoding/> 後: <%= request.getCharacterEncoding() %>
実行結果
前: null 後: MS932