Primefaces 3 の utf-8 エンコーディングに問題がありますが、これ(web.xml に文字エンコーディング用のフィルタを追加) で問題が解決しました。しかし、私の web.xml には、primefaces ファイルアップロード用の別のフィルターがあります。fileupload があるページでは、何もアップロードしていなくても、アップロード用のフィルターがなかったときと同じように、文字エンコード フィルターが機能せず、不明な値の utf-8 文字セットが表示されます。このフィルターを一緒に使用するにはどうすればよいですか?
9261 次
2 に答える
12
これは PrimeFaces のバグMultipartRequest
です。文字エンコーディングフィルターで行われたように、HTTPサーブレットリクエストで設定されたものではなく、フォームフィールドにプラットフォームのデフォルトの文字エンコーディングを使用しています(これは PrimeFaces の前HttpServletRequest#setCharacterEncoding()
にマップされていると思います)。web.xml
FileUploadFilter
基本的に、MultipartRequest
PrimeFaces 3.3の 85 行目と 88 行目
formParams.get(item.getFieldName()).add(item.getString());
// ...
items.add(item.getString());
次のように変更する必要があります
formParams.get(item.getFieldName()).add(item.getString(getCharacterEncoding()));
// ...
items.add(item.getString(getCharacterEncoding()));
問題 4266として報告しました。それまでの間、サーバー プラットフォームのデフォルトのエンコーディングが ISO-8859-1 であると仮定して、次のようにバッキング Bean アクション メソッドの誤った文字列エンコーディングを手動で修正することをお勧めします。
string = new String(string.getBytes("ISO-8859-1"), "UTF-8");
于 2012-06-26T11:57:10.917 に答える
5
基本的に、これを修正するには次のコード行が必要です。
new String(file.getFileName().getBytes(Charset.defaultCharset()), "UTF-8")
于 2014-01-06T22:01:36.047 に答える