問題点

UTF-8文字入力(ISO-8859-1文字セットではない)でフォームを送信して、そのフォーム出力が書き込まれる場合、サーバーは間違った文字を出力します。

解決策

UTF-8 エンコーディングを使用するようにコンテンツタイプを設定します。例:

<%@taglib uri="/libs/CFC/resources/jstl/c.tld" prefix="c" %> <form method="post"> <input name="searchterm" value="<c:out value="${param.searchterm}" />" /><input type="submit" /> </form>

次に例を示します:

ユーザーがフォームフィールド(入力ボックス)に「Ã(a-Umlaut)」を挿入し、「送信」をクリックすると、JSTL ラウンドトリップの後で入力ボックスに「�」が表示されます。

同じサンプル JSP ページは、他のサーブレットエンジンでも正常に動作します。

予期される結果:

入力ボックスには「Ã」(a-Umlaut)が表示されます。

ソリューションの例:

<%@ page contentType="text/html;encoding=UTF-8" %> <%@ taglib uri="/libs/CFC/resources/jstl/c.tld" prefix="c" %> <form method="post"> <input name="searchterm" value="<c:out value="${param.searchterm}" />" /><input type="submit" /> </form>

追加情報

この問題は、CQ サーブレットエンジンでデフォルトのエンコーディングが ISO-8859-1である場合に起こります。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー