问题描述
我正在用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","");