使用iText5在生成的PDF中使用unicode字符
我对生成的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,等于iso-8859-1中的’°’)。
现在我试过以下:
1)将-Dfile.encoding=utf8
添加到java选项(在任一环境中都没有效果)
2)将ARIALUNI.TTF添加到测试环境C:\ WINDOWS \ Fonts(无效)
3)将unit.getName()编码为iso-8859-1,但它使得唱歌程度在我的机器中消失。
查看pdf的环境无效,在我的工作站上生成的pdf可以很好地显示在各处,反之亦然。
有没有人有这方面的经验? 我打赌有一种方法可以在两种环境中使用它。