7

Primefaces 3 の utf-8 エンコーディングに問題がありますが、これ(web.xml に文字エンコーディング用のフィルタを追加) で問題が解決しました。しかし、私の web.xml には、primefaces ファイルアップロード用の別のフィルターがあります。fileupload があるページでは、何もアップロードしていなくても、アップロード用のフィルターがなかったときと同じように、文字エンコード フィルターが機能せず、不明な値の utf-8 文字セットが表示されます。このフィルターを一緒に使用するにはどうすればよいですか?

4

2 に答える 2

12

これは PrimeFaces のバグMultipartRequestです。文字エンコーディングフィルターで行われたように、HTTPサーブレットリクエストで設定されたものではなく、フォームフィールドにプラットフォームのデフォルトの文字エンコーディングを使用しています(これは PrimeFaces のHttpServletRequest#setCharacterEncoding()にマップされていると思います)。web.xml FileUploadFilter

基本的に、MultipartRequestPrimeFaces 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 に答える