【问题标题】:How to convert UTF-8 string to japanese or any other language IText PDF?如何将 UTF-8 字符串转换为日语或任何其他语言的 IText PDF?
【发布时间】:2018-03-05 17:04:07
【问题描述】:

我正在使用 UTF-8 编码解析 XML,其中包含一些中文、日文或卡纳达语我能够成功地在屏幕 (HTML) 页面中显示语言,但我想生成我只看到英文的 PDF...

我遇到了字体,但担心每种语言都有字体(抱歉,如果我错了)。

在调试模式下,当它转换为 UTF -8 时,我可以在变量中看到中文和其他语言,我看到 ?????????。

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

请帮助在 IText pdf 中显示任何语言

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

【问题讨论】:

  • 听起来你自己还没有充分调试这个问题。例如,您为什么要尝试通过设置编码来解决“显示 unicode 字符”,而不是确保 PDF 生成代码设置正确的字体堆栈?如果没有显示您现在正在尝试的代码的代码,作为minimal reproducible example,我们不知道您实际上做错了什么,并且您的描述没有提供足够的信息让我们继续。请快速重读how to ask a good question 并相应地调整您的帖子。
  • XML 文档的编码是什么并不重要(只要您确实阅读了使用该编码的文档); XML 文档中的所有文本值都采用 Unicode。 (图书馆可能比定制的实现做得更好。)
  • 这是Java,不是吗?请edit添加标签。 Java 字符串也是 Unicode (UTF-16)。您的代码是从 Java 字符串 (UTF-16) 到 ISO 8859-1 的有损转换,然后是从 UTF-8 的数据损坏转换,最终以 Java 字符串 (UTF-16) 结束。
  • new String(myString.getBytes(Charset.forName("ISO-8859-1")), Charset.forName("UTF-8")) - 如果这样的转换对于正确检索您的输入数据是必要的,那么您获得 myString 的方式已经有些可疑了。话虽如此,您的问题似乎与 iText 有关,但您既没有以任何方式展示您如何使用 iText 处理数据,也没有解释不希望的效果是什么或您真正想要什么。

标签: java xml pdf encoding utf-8


【解决方案1】:

UTF-8 能够表示所有语言的文本。 ISO-8859-1 只能表示英语文本和少数欧洲语言的大多数文本。

如果您将文本转换为 ISO-8859-1,然后将其存储为 UTF-8,您将破坏对 ISO-8859-1 有限子集不支持的其他语言文本的支持。将其保存为 Unicode 格式(例如 UTF-8)。

正如 cmets 中提到的,Java 字符串在内部是 Unicode 兼容的(它们在内部使用 UTF-16),因此不需要任何转换,即使是 UTF-8,也可以完全支持所有语言。仅当您需要转换用于导出为 PDF 的任何内容时,您才需要进行转换,但您似乎没有指定它是什么。

【讨论】:

  • 感谢您的帮助...我明白您的意思了,我可以在 excel 报告中打印语言...无需使用 UTF-8 或任何东西,只需获取数据并打印...但 PDF Itext没有显示那些文本(日语和所有)..在 IText 中使用字体时遇到了
  • @GopiLal "但是 PDF Itext 没有显示那些文本" - 然后简单地显示你的 iText 使用的关键代码,所以这里的人可以分析它并告诉你什么你做错了。
猜你喜欢
  • 2018-05-10
  • 2014-10-18
  • 2021-01-27
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2014-11-20
相关资源
最近更新 更多