2017-09-24 43 views
0

我使用UTF-8编码,这有一定的中国,日本或坎纳达我能够成功地显示在屏幕(HTML)页面的语言,但我想生成PDF我只看到英语解析XML ...如何将UTF-8字符串转换为日语或任何其他语言IText PDF?

我碰到的字体,但担心像有每个语言字体(如果我错了抱歉)。

在调试模式下,我能够看到中国的变化和其他语言时,它被转换为UTF-8我看到?????????。

      new String(myString.getBytes(Charset.forName("ISO-8859-1")), 
            Charset.forName("UTF-8")) 

请帮忙显示iText的PDF任何语言

注:我使用的解析XML UTF-8,当我从数据库获取,而无需使用UTF或任何我能打印excel ...在PDF中我认为我应该使用字体。

+0

这听起来像你还没有充分调试过这个问题。例如,你为什么试图通过设置编码来解决“显示unicode字符”,而不是确保PDF生成代码设置正确的字体堆栈?如果没有代码显示你现在正在尝试什么,作为一个[mcve],我们不知道你实际上做了什么错误,而你的描述并没有给我们提供足够的信息让我们继续。请给出[如何提出一个好问题](/ help/how-to-ask)快速重读并相应地调整你的帖子。 –

+0

无论XML文档的编码是什么(只要你用该编码读取文档); XML文档中的所有文本值都使用Unicode。 (一个库可能会比定制的实现更好。) –

+0

这是Java,不是吗?请[编辑]添加标签。 Java字符串也是Unicode(UTF-16)。您的代码是从Java字符串(UTF-16)到ISO 8859-1的有损转换,随后是UTF-8的数据破坏转换,最后再次以Java字符串(UTF-16)结尾。 –

回答

1

UTF-8能够代表所有语言的文本。 ISO-8859-1只能用英语表示文本,而在少数欧洲语言中则能表示大多数文本。

如果你将文本转换为ISO-8859-1,然后把它作为UTF-8,你是打破了在不通过ISO-8859-1的有限子集支持其他语言的文本支持。保持Unicode格式(例如UTF-8)。

正如在评论中提到的,Java字符串在内部与Unicode兼容(它们在内部使用UTF-16),所以不需要进行任何转换,即使对于UTF-8,也完全支持所有语言。如果您需要这样做,您只需要进行转换,无论您用于导出为PDF的任何内容,但似乎并未指定具体内容。

+0

感谢您的帮助......我明白了您的观点我能够在Excel报告中打印语言......无需使用UTF-8或任何其他任何东西即可获取数据和打印......但PDF Itext不显示这些文本(日语以及所有)..遇到使用IText中的字体 –

+0

@GopiLal *“但PDF Itext不显示这些文本”* - 那么只需显示iText使用的关键代码,这样人们就可以分析它并告诉你你做错了什么。 – mkl

相关问题