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中得到了什么?这意味着从数据库检索文本时,文本被破坏了。嗯,严格地说,如果可以通过更改数据库驱动程序或数据库设置来纠正这一问题,这将是最好的。但是,如果数据库中的数据已经被破坏,那么您的代码很可能是最好的选择,除非您完全重新生成所有相关应用程序中的所有数据库访问。