NumberFormat を使用して double 変数を価格文字列 (例: €59,00) にフォーマットしようとしています
ここに私が書いた方法があります:
private String formatValue (double price){
NumberFormat f = NumberFormat.getCurrencyInstance(Locale.ITALIAN);
String value = f.format(new BigDecimal(price));
return value;
}
次に、iText ライブラリを使用して、返された値を pdf フィールドに書き込みます。
form.setField("value", formatValue(price));
ここで、生成された pdf をブラウザーの pdf ビューアー (chrome や firefox など) で開くと、フィールドは次のようになります: €59,00
しかし、Adobe Reader で開くか、物理的に印刷しようとすると、€59,00 のように表示されます。
変数値をデバッグで開くと、文字列が ¤59,00 として書式設定されていることがわかります。
私が間違っていることは何ですか?
NumberFormatの代わりにDecimalFormatを使用して解決し、utf-8エンコードで€記号を渡しました(mwhsによる入力[ありがとう])
private String formatValue (double price){
DecimalFormat formatter = new DecimalFormat("\u20ac0.00");
String value = formatter.format(price);
return value;
}