在iTextPdf中使用UTF-8字符串填写AcroFields 我希望在PDF表格中填写包含特殊字符的信息: 公共类主{ 公共静态void main(字符串[]args)引发IOException、DocumentException{ PdfReader reader=新的PdfReader(“in.pdf”); PdfStamper stamper=新PdfStamper(读卡器,新文件输出流(“out.pdf”)); AcroFields form=stamp.getAcroFields(); 形式。设置域(“会话地址”、“会话地址”); 母版。SetFormFlatting(真); 压模关闭(); reader.close(); } }

在iTextPdf中使用UTF-8字符串填写AcroFields 我希望在PDF表格中填写包含特殊字符的信息: 公共类主{ 公共静态void main(字符串[]args)引发IOException、DocumentException{ PdfReader reader=新的PdfReader(“in.pdf”); PdfStamper stamper=新PdfStamper(读卡器,新文件输出流(“out.pdf”)); AcroFields form=stamp.getAcroFields(); 形式。设置域(“会话地址”、“会话地址”); 母版。SetFormFlatting(真); 压模关闭(); reader.close(); } },utf-8,character-encoding,itext,acrofields,Utf 8,Character Encoding,Itext,Acrofields,使用上述代码,我在out.pdf中看到以下结果(位于aa地址之后的部分:): 现在,如果我将所有特殊字符指定为unicode代码: form.setField(“sessionAddress”、“\u00D5\u00C4\u00D6\u00DC\u00F5\u00E4\u00F6\u00FC\u0161\u017E”); 我做错了什么? 据我所知,字符串代表一个字符序列。在Java代码中,上面两个字符串的内容不应该相等吗 我有一个满是UTF-8编码数据的数据库。我如何让它像Java应用程序

使用上述代码,我在
out.pdf
中看到以下结果(位于
aa地址之后的部分:
):

现在,如果我将所有特殊字符指定为unicode代码:
form.setField(“sessionAddress”、“\u00D5\u00C4\u00D6\u00DC\u00F5\u00E4\u00F6\u00FC\u0161\u017E”);

我做错了什么? 据我所知,字符串代表一个字符序列。在Java代码中,上面两个字符串的内容不应该相等吗

我有一个满是UTF-8编码数据的数据库。我如何让它像Java应用程序的其他部分一样直接使用iTextPdf(数据库、Java代码、API请求/响应和前端JavaScript代码都包含这样的字符串,除了iTextPdf之外,其他一切都可以工作)


如果有任何重要意义,那么包含上述代码的java文件将保存在UTF-8中。我正在使用IntelliJ在gradle项目中运行
main
方法。iTextPdf版本5.5.13。Java 11。

我怀疑源文件的编码与编译时不同。关于UTF-8编码的数据,您必须将其转换为java字符串,并在iText中正常工作,这与您的源文件完全不同。@Paulosares谢谢。关于UTF-8编码数据直接从数据库中工作,您是对的。但是,整个项目是使用相同的编译器和gradle版本构建的。那么,项目中的所有UTF-8字符串如何与所有其他库(数据库、Spring、电子邮件等)完美配合呢?我怎么能确定我不仅是幸运的,而且一切都按预期进行呢?最重要的是:如何回答这个问题并使UTF-8编码字符串与iTextPdf一起工作?我需要在构建配置中更改什么?
javac
-encoding
选项是您想要的。