我遇到非英语字符的字符编码问题。这里我使用itext库来生成pdf。
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Document document = new Document();
document.setMargins(-50.0f, -50.0f, 15.0f, 0.0f);
PdfWriter.getInstance(document, byteArrayOutputStream);
document.open();
myObj.setByteArrayInputStream(new byteArrayInputStream(byteArrayOutputStream.toByteArray()));
我尝试使用以下代码
myObj.setByteArrayInputStream(new ByteArrayInputStream(byteArrayOutputStream.toString("UTF-8").getBytes()));
PDF的设计与编码和字体之间的耦合过于紧密,并且 - 根据今天的标准 - 不必要地用于非西方文本。
代码中的问题很可能只是最终输出流的编码。已经正确地指出PDF是二进制格式。所以不要试图在输出流中引入任何编码。
相反,请查看iText字体示例,例如https://itextpdf.com/en/resources/examples/itext-7/itext-7-building-blocks-chapter-1-examples-pdffont,特别是处理外国文本和使用PdfEncodings.IDENTITY_H
的例子。
如果仍有问题,请在问题中添加相关代码,特别是设置字体的代码并将文本添加到PDF页面。