我正在尝试使用 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 查看器(如 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;
}
最佳答案
您可能正在使用单独的编码。浏览器可能正在使用 UTF-8,而 adobe reader 可能正在使用 ANSI 或 UTF 的其他本地化版本。 (请注意,这些不一定是他们使用的编码,只是一个示例)因此请检查您的偏好,然后重试。
关于Java欧元符号转换为货币符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19430250/