2

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;    
}
4

3 に答える 3

2

別のエンコーディングを使用している可能性があります。ブラウザーは UTF-8 を使用している可能性がありますが、Adobe Reader は ANSI または別のローカライズ版の UTF を使用している可能性があります。(これらは必ずしも使用するエンコーディングではなく、単なる例であることに注意してください) ので、設定を確認して、もう一度やり直してください。

于 2013-10-17T15:02:35.330 に答える