Webアプリケーション(JSF 1.2、Spring、Tomcat 7)で文字セットのエンコーディングに問題があります。テストするためのアイデアが不足していますうまくいかない。POSTパラメータがJSF 1.2で間違ったエンコーディングを使用しています
私は「CA」のようなものを提出するたびに、私は「çã」取得:それは、UTF-8は、JSFのライフサイクルでのISO-8859-1どこかに変換されるときにPOSTさ私のデータを意味します。
System.out.println(new String("çã".getBytes("UTF-8"), "ISO-8859-1"));
ことができます(私は間違って変換はJSFのライフサイクルのどこかにあると信じている:それは同じ出力がためだ原因
は私がISO-8859-1に誤った変換がUTF-8であることを知っています
public void debugValidator(FacesContext context, UIComponent component,
Object object) throws ValidationException {
System.out.println("debug validator:");
System.out.println(object);
System.out.println("\n");
throw new ValidationException("DEBUG: " + object.toString());
}
し、そのメッセージのように返します: "DEBUG:çã"
- ?私はMBでバリデータを設定する原因の前に)なります私はすべての.xhtmlページに最初の行を
<?xml version="1.0" encoding="UTF-8"?>
としています。私はBalusC's articleに応じて、デフォルト - でUTF-8を使用するには、要求の文字エンコーディングを設定するので、それは必要はありませんが、私はとにかく設定し、Springの
CharacterEncodingFilter
私web.xmlのでのFaceletsを使用してい - UTF-8。
- 私はそれは私のブラウザのせいではありませんだけで
- を保証するために、Tomcatの
server.xml
ファイルにURIEncoding="UTF-8"
を入れて、それがコンソールで同じことを印刷し、私の環境では、すべてのUTF-8です。
さらに何をテストできますか?私の間違った仮定は何でしょうか?
ありがとうございます!
こんにちは、BalusC、あなたの答えに感謝を参照してください私はそれが他の方法で回避だと思う、Content-TypeヘッダをUTF-8に設定されている原因となります。さて、ブラウザのエンコーディングを手動でISO-8859-1に変更したかどうか確認したところ、文字はバリデーターメッセージに正しく表示されます。今、それはどういう意味ですか? – elias
Faceletsについて、私は1.1.15.B1 btwを使用しています。 – elias
_Content-type_が_text/html; charset = UTF-8_に設定されているにもかかわらず、ブラウザがISO-8859-1としてデータを送信している可能性がありますか? – elias