我在我的项目params['_source']['companies']['58f99f99ba63d10006291b59']['sentiment']
中使用。我读了docx文件并将其转换为html。我想在文件中写入结果,但我有问题。 FileOutputStream不会写波兰字符。例如,而不是
Jsoup
我有
Wiersz nad którym znajduje się aktualnie kursor myszy
这是我解析html的方法:
Wiersz nad kt?rym znajduje si� aktualnie kursor myszy .
在这里我写信给文件:
public String parseHTML(String html) {
int i = 0;
Document doc = Jsoup.parse(html);
doc.outputSettings().syntax(Document.OutputSettings.Syntax.xml).charset("ISO-8859-2");
for (Element element : doc.select("img[src]")) {
element.attr("src", "resources/images/img" + i + ".png");
i++;
}
return doc.toString();
}
这是我阅读文件的方法:
public void saveHelpFile(byte[] document) throws IOException {
File file = new File(
"path/to/file");
String s = new String(document, "ISO-8859-2");
PrintWriter writer = new PrintWriter(file, "ISO-8859-2");
try {
writer.write(s);
} finally {
writer.close();
}
}
答案 0 :(得分:0)
您的字符串很好,它包含正确的信息,但是当您写入文件时,您使用字符集“ISO-8859-2”编写它。文件不保留它写入的字符集信息。无论应用程序读取文件,都应该知道或猜测文件的字符集。这就是为什么总是建议用UTF-8或UTF-16编写文件。因此,在您的代码中,就获取String而言,不需要进行任何更改。就在您写入文件时,将字符集更改为UTF-8。它可以工作的原因是你“告诉”你的字符串,你的字节代表charset“ISO-8859-2”中的信息,应该被解释为这样。所以String是正确构建的。但是内部java将所有Srtings保留在Unicode字符集(UCS-2)中。因此,现在您可以将String写入任何有效字符集中的任何其他目标(在您的情况下为文件),Java将知道如何编写它。因此,在您的情况下,您可以用“ISO-8859-2”或“UTF-8”或任何其他支持波兰语的字符集(例如“UTF-16”)编写它,因为UTF-8通常被接受为事实上的标准建议使用它