0

JSF で国際化を実現しようとしているときに問題が発生しました。UI ページに (英語以外の言語で) データを入力すると、その値はマネージド Bean 変数に暗号化された値として格納されます (その形式を特定することさえできません)。UI ページに入力した値を取得できません。MySql データベースに (JSF ページから) さまざまな言語の値を格納する必要があります。しかし、上で述べたように、マネージド Bean で入力値を取得するのに苦労しています。そうするように私を導いてください。

前もって感謝します

4

1 に答える 1

4

暗号化?冗談でしょう。ほとんどの場合、実際にはMojibakeを意味していました。

Mojibake を回避するには、アプリケーション全体で、文字の生成と使用中に同じ文字エンコーディングを使用する必要があります。最近では、世界を支配したい場合は、UTF-8 を選択するのが賢明です。JSF2 のデフォルトは常に UTF-8 です。だからあなたの問題はやや奇妙です。

おそらく、実際に PrimeFaces を使用していますか? ajax リクエストが起動されると、デフォルトの UTF-8 文字エンコーディングが混乱することが知られています。その部分はここで回答されています。サーブレットフィルターを作成する必要があります。

あるいは、値は実際には正しいのに、UTF-8 をまったくサポートしない出力に値を出力しているため、問題の原因を誤って特定したのではないでしょうか? たとえばSystem.out.println()、Eclipse コンソールを介して。ここで回答されているように、ウィンドウ>設定>一般>ワークスペース>テキストファイルのエンコードで構成する必要があります。

または、JSF2 エンコーディングを明示的に別のものに強制した可能性があり<f:view encoding>ますISO-8859-1encodingから属性を削除し、<f:view>デフォルトのままにしてください。

または、MySQL DB/テーブルのエンコーディングがまったく UTF-8 ではない可能性がありますが、それはあなたが説明した問題の症状と一致しないか、DB から取得した値を実際に出力している部分を省略したに違いありません。フォーム送信から取得された値。

いずれにせよ、Java EE Web アプリケーションの文字エンコーディングについて知っておくべきことはすべて、考えられるすべての問題と解決策とともに、Unicode で詳しく説明されています - How to get the characters right?

于 2013-02-05T11:11:07.513 に答える