<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