私の Web アプリケーションは現在以下を使用しています:
- JBoss AS7
- JSF2
- プライムフェイス
このバグのため、JSF で UTF-8 フォームを送信するとデータが破損するため、 @WebFilterをセットアップします。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
BalusC の提案どおり (ありがとう)。
簡単に言えば、常に正しく機能します。ファイルのアップロードにも同じフォームを使用する必要がある場合、別の問題が発生します (例: http://www.primefaces.org/showcase-labs/ui/fileUploadDnd.jsf ) 。
主な違いはこちら
<h:form enctype="multipart/form-data">
enctype 属性がなければ、特殊な Unicode 文字は引き続き読み取り可能です。
enctype 属性を使用すると、「ciaò」ではなく「ciaò」が見つかります。
ただし、私のフィルター@WebFilter("/*") EncodingFilter
は常に呼び出されます。
考えられる解決策は、JBoss のデフォルトのエンコーディングを utf-8 に設定することでしょうか? どうやってやるの?
*** * 編集 ****
JAVA_OPTS に -Dfile.encoding=UTF-8 を入れてみましたが、何もしませんでした :(( 助けてください!