我在生成的PDF中遇到unicode字符有问题。在我自己的工作站上一切正常,但在测试环境中出了问题。
代码插入值如下:
Font boldDefaultFont = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
// ...
PdfPCell headerCell = new PdfPCell();
// unit.getName() returns "°C"
Phrase header = new Phrase(unit.getName(), boldDefaultFont);
headerCell.addElement(header);
Java源代码是UTF-8。
如果在我的环境中运行(java 1.6.0_18,WinXP),则单元格包含°C
,但在测试环境(java 1.6.0_18,Win2003)中,结果为°C
。我已经发现这是一个编码问题(UTF-8'°'是0xc2b0,等于'-8859-1中的'°')。
现在我试过以下:
1)向java选项添加-Dfile.encoding=utf8
(在任一环境中均无效果)
2)将ARIALUNI.TTF添加到测试环境C:\ WINDOWS \ Fonts(无效)
3)将unit.getName()编码为iso-8859-1,但它使得唱歌程度在我的机器中消失。
查看pdf的环境没有任何效果,在我的工作站上生成的pdf显示在各处都很好,反之亦然。
有没有人有过这方面的经验?我打赌有一种方法可以在两种环境中使用它。