gpt4 book ai didi

java - getBytes() 不适用于西里尔字母

转载 作者:行者123 更新时间:2023-12-02 05:07:11 26 4
gpt4 key购买 nike

我找到了一些答案,但没有一个适合我。我想从 html 制作一个 pdf 文件,但问题是我的 html 有西里尔字母,我发现这个简单的代码与此有关:

String s = "Здраво Kris";

byte bytes[] = s.getBytes("UTF-8");

String value = new String(bytes, "ISO-8859-1");

// I tried with new String(bytes, "UTF-8") but it didn't work

然后我将值传递给我的 pdf 生成器函数,但它仅输出字符串 s 中非西里尔字母的部分,即 Kris

 htp.CreatePDF("<html><head><title>kristijan</title></head><body><h1>" + value + "</h1></body></html>", "kris");

最佳答案

请看一下我对这个问题的回答:Can't get Czech characters while generating a PDF

您的代码中可能会出现一些问题。

这是一个非常糟糕的主意:

String s = "Здраво Kris";

假设您将包含此代码的 .java 文件发送给将其另存为 ASCII 的人,那么您的源代码将更改为:

String s = "Здраво Kris";

当我将文档存储到源代码控制系统时,我也看到过这种情况发生。

底线:在使用硬编码字符串编写源代码时,切勿使用特殊编码。使用正确的编码将字符串存储在文件中以写入和读取字符串,或者如果您坚持在源代码中使用硬编码数据,则使用 unicode 表示法。

即使您正确存储了包含该字符串的文件,在编译代码时也必须非常小心。如果编译器使用不同的编码,s也会被损坏。

将 HTML 转换为 PDF 时,您还必须确保正确读取数据。我假设您正在使用 XML Worker(而不是过时的 HTMLWorker 类)。您可以在不同的地方指示要使用的编码。

最后,您必须确保使用支持西里尔字符的字体。例如:如果您使用默认字体 Helvetica,则不会呈现任何内容。

您还可以在免费电子书 The Best iText Questions on StackOverflow 中找到此信息.

关于java - getBytes() 不适用于西里尔字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27685144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com