次のように、JSTL formatNumberタグを使用して、JSPページにグループ化と小数点以下の桁数を含む数値を出力しようとしています。
<fmt:formatNumber value="${form.amount}" pattern='###,##0.00' />
タグとページディレクティブでエンコーディングがISO-8859-1に設定されている場合、lang = en、fr、およびesで正常に機能しますが、UTF-8に設定すると、lang=frが正しく機能しなくなります。予想通り、小数点はコンマになりますが、グループ区切り文字は�になります。
フォーマットのテストとして、パターンを省略したので、
<fmt:formatNumber value="${form.amount}" />
結果は同じでした。
エンコーディングのテストとして、ISO-8859-1でサポートされていないフランス語の文字(Œ、œ、非常にまれなŸなど)をページに配置しましたが、エンコーディングがUTF-8に設定されていますが、エンコードがISO-8859-1に設定されていると、予想どおり文字化けするため、エンコードがUTF-8に正しく設定されているように見えます。ブラウザは、エンコーディングがUTF-8であることも示しています。
これはSpringアプリケーションであり、ロケールインターセプターを使用して、リクエストの「lang」パラメーターに基づいてロケールを設定します。
他に何を試すことができますか?
編集:私はそれを理解したと思いますが、なぜ私がしたことがうまくいくのかわかりません。私はタイルを使用しており、ページのレイアウトを定義するメインのJSPファイルと、メタ、ヘッダー、メイン、およびフッター領域のサブページを定義する4つのタイルがあります。私はもともと<%@ page pageEncoding = "UTF-8"%>をレイアウトJSPにのみ持っていて、タイル定義がそれを継承すると考えていましたが、そうではないようです。そのディレクティブをすべてのページに追加する必要があります。これは、変更したい場合は面倒です。それはどのように機能する必要がありますか?