我想使用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。
如果我在调试中打开变量value,我会看到字符串格式为¤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;
}