我正在尝试使用 NumberFormat 将双变量格式化为价格字符串(例如: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 查看器(如 chrome 或 firefox)中打开生成的 pdf 时,该字段看起来像:59,00 欧元
但是当我在 adobe reader 中打开它,或者我尝试物理打印时,它看起来像 59,00 欧元。
如果我在调试中打开变量值,我会看到格式化为 ¤59,00 的字符串。
我做错了什么?
我使用 DecimalFormat 而不是 NumberFormat 解决了问题,并在 utf-8 编码中传递了 € 符号(mwhs [谢谢] 的输入)
private String formatValue (double price){
DecimalFormat formatter = new DecimalFormat("\u20ac0.00");
String value = formatter.format(price);
return value;
}