暗号化?冗談でしょう。ほとんどの場合、実際にはMojibakeを意味していました。
Mojibake を回避するには、アプリケーション全体で、文字の生成と使用中に同じ文字エンコーディングを使用する必要があります。最近では、世界を支配したい場合は、UTF-8 を選択するのが賢明です。JSF2 のデフォルトは常に UTF-8 です。だからあなたの問題はやや奇妙です。
おそらく、実際に PrimeFaces を使用していますか? ajax リクエストが起動されると、デフォルトの UTF-8 文字エンコーディングが混乱することが知られています。その部分はここで回答されています。サーブレットフィルターを作成する必要があります。
あるいは、値は実際には正しいのに、UTF-8 をまったくサポートしない出力に値を出力しているため、問題の原因を誤って特定したのではないでしょうか? たとえばSystem.out.println()
、Eclipse コンソールを介して。ここで回答されているように、ウィンドウ>設定>一般>ワークスペース>テキストファイルのエンコードで構成する必要があります。
または、JSF2 エンコーディングを明示的に別のものに強制した可能性があり<f:view encoding>
ますISO-8859-1
。encoding
から属性を削除し、<f:view>
デフォルトのままにしてください。
または、MySQL DB/テーブルのエンコーディングがまったく UTF-8 ではない可能性がありますが、それはあなたが説明した問題の症状と一致しないか、DB から取得した値を実際に出力している部分を省略したに違いありません。フォーム送信から取得された値。
いずれにせよ、Java EE Web アプリケーションの文字エンコーディングについて知っておくべきことはすべて、考えられるすべての問題と解決策とともに、Unicode で詳しく説明されています - How to get the characters right?