Jsoup.Element.text无法正确编码utf-8

问题描述

我正在用Eclipse JDK 1.8进行项目。 我的客户最近添加一个新请求,以启用阿拉伯字母的保存和检索功能。我已经添加useUnicode=true&characterEncoding=UTF-8 在jdbc网址中。现在,保存数据可以正常工作,并且我得到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。

我很少看到与此类似的问题,但没有一个问题解决了我的问题。由于GET工作正常,因此我确信从DB检索数据不是问题。由于单元测试可以很好地进行编码,因此也可以正常工作。现在我缺少与jsoup相关的东西。 我在尝试中缺少什么? 有人知道请帮助我。

解决方法

使用ISO-8859-9更改UTF-8

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

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

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

,

我曾经用过UTF-8将字符串写入outpuut并解决了问题

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

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