Jsoup.Element.text() 未正确编码 utf-8

Jsoup.Element.text() not correctly encoding utf-8

我在 eclipse 中做我的项目,JDK 1.8。 我的客户最近添加了一个新请求,以启用阿拉伯字母的保存和检索。我已添加 useUnicode=true&characterEncoding=UTF-8 在 jdbc url 中。现在保存数据可以正常工作了,我得到了 UTF-8 编码形式的响应。它工作正常。为此我添加了

path = "/v2",consumes="application/json;charset=UTF-8", produces = "application/json;charset=UTF-8"

在我所有的控制器中。我有一个 Api 来生成标签,我在其中使用 jsoup 编辑 html 模板。然后使用 wkhtmltopdf 库转换为 pdf。如果我使用英语,此功能可以正常工作,

org.jsoup.nodes.Document doc = Jsoup.parse(template, "UTF-8", "");
Element customerName = doc.getElementById("name");
customerName.text(orderAddress.getName());

如果orderAddress.getName() 是阿拉伯语我得到 ????? 我刚刚尝试在控制台中打印也得到相同的结果。logger.debug("Name:"+orderAddress.getName());
Eclipse 已启用以使用 utf-8。 我也试过这样使用

customerName.text(new String(orderAddress.getName().getBytes(),"UTF-8"));
logger.debug("Name:"+new String(orderAddress.getName().getBytes(),"UTF-8"));

也一样。 在我的单元测试中,我尝试像这样使用 customerName.text("فاسيلة"); 正常工作。并生成我需要的 pdf。

我见过几个类似的问题,但没有 none 解决了我的问题。由于 GET 工作正常,我确信从数据库中检索数据不是问题。由于单元测试工作正常,因此编码也工作正常。现在我缺少与 jsoup 相关的东西。 我在尝试中缺少什么? 有知道的请帮帮我

将 UTF-8 更改为 ISO-8859-9

 Jsoup.parse(template, "ISO-8859-9", "");

大多数情况下UTF-8涵盖了该语言,但UTF-8不支持某些语言

关于 ISO-8859-9 的注释:https://en.wikipedia.org/wiki/ISO/IEC_8859-9

我在写字符串输出的时候用used UTF-8解决了

FileUtils.writeStringToFile(tempHTML, doc.outerHtml(), "UTF-8");

无需将编码更改为 "ISO-8859-9" 保持为 Jsoup.parse(template, "UTF-8", "");