Java 在控制台中打印西班牙语文本并使用Itext 7将其写入PDF时出现问题

Java 在控制台中打印西班牙语文本并使用Itext 7将其写入PDF时出现问题,java,unicode,itext7,Java,Unicode,Itext7,我从我的数据库中收到以下文本 “----一些文本----Bônus----一些文本----” 我将其存储在一个字符串变量中,并在控制台中打印该变量并将其写入PDF,但问题是我没有在控制台和PDF中获得正确格式的文本,而是将Bônus作为“Bônus”,我引用了这个示例 并将我的编译器在gradle文件中的编码更改为 compileJava.options.encoding = 'UTF-8' 但问题仍然没有得到解决 我给出的示例文本只是一个示例文本,还有许多其他单词需要更改,或者显示一个空

我从我的数据库中收到以下文本

“----一些文本----Bônus----一些文本----”

我将其存储在一个字符串变量中,并在控制台中打印该变量并将其写入PDF,但问题是我没有在控制台和PDF中获得正确格式的文本,而是将Bônus作为“Bônus”,我引用了这个示例

并将我的编译器在gradle文件中的编码更改为

compileJava.options.encoding = 'UTF-8'
但问题仍然没有得到解决

我给出的示例文本只是一个示例文本,还有许多其他单词需要更改,或者显示一个空框

我需要从IText的角度来研究它吗?还是编译器


更改编译器的Unicode没有帮助,尽管检查您是否有Unicode字体。这可能会给你带来麻烦。有一个设置字体的代码

BaseFont basefont = BaseFont.createFont("font_name.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
然后像这样使用它:

Paragraph p = new Paragraph("text in unicode", new Font(basefont, 22));

经过更多的搜索,我终于能够以UTF8的形式得到它

byte[] ptext = originalString.getBytes(ISO_8859_1);
String value = new String(ptext, UTF_8);
请找到我提到的链接


我正在使用以下字体样式
style style=new style().setFont(PdfFontFactory.createFont(StandardFonts.COURIER_delivery);).setFontSize(4.5f).setFontColor(ColorConstants.BLACK)您是否尝试使用其他内容?例如:FontConstants.TIMES_ROMAN?结果是什么?编辑器和编译器必须使用相同的编码。上述情况可能是由于UTF-8中的.java,以及使用Windows编码编译而导致的。尝试使用
\u00F4
而不是
检查该问题。使用
\u00F4
我在控制台中获得正确的值,但如何使其实时工作?然后配置的编译器编码不起作用。我对格雷德尔没有经验。如果你找到了一个解决方案,回答你自己的问题-对于其他有同样问题的人。这也可能是一个数据库问题。在mysql中,您必须在数据库和传输中指定UTF-8,“使用\u00F4 am在控制台中获得正确的值”-使用\u00F4,您在PDF中得到了什么?这意味着从数据库检索文本时,文本被破坏了。嗯,严格地说,如果可以通过更改数据库驱动程序或数据库设置来纠正这一问题,这将是最好的。但是,如果数据库中的数据已经被破坏,那么您的代码很可能是最好的选择,除非您完全重新生成所有相关应用程序中的所有数据库访问。