我正在尝试将docx文档转换为html,但我无法使编码工作得很好。 OutputStream包含xml标头,声明内容使用UTF-8编码,但不是语言特定的标志(如:ąśćźż)我得到了一些垃圾。这是我的转换器代码:
public class DocumentProcessor extends DocumentProcessorInterface {
private WordprocessingMLPackage load;
private HTMLSettings htmlSettings;
private Http.MultipartFormData.FilePart filePart;
public DocumentProcessor(Http.MultipartFormData.FilePart filePart) {
super(filePart);
this.filePart = filePart;
}
private void prepare() {
try {
load = Docx4J.load(filePart.getFile());
htmlSettings = Docx4J.createHTMLSettings();
htmlSettings.setImageHandler(new DataUrlImageHandler());
htmlSettings.setWmlPackage(load);
} catch (Docx4JException e) {
e.printStackTrace();
}
}
@Override
public String getHTML() {
prepare();
OutputStream outputStream = new ByteArrayOutputStream();
Logger.info("Converting");
try {
Docx4J.toHTML(htmlSettings, outputStream, Docx4J.FLAG_EXPORT_PREFER_XSL);
} catch (Docx4JException e) {
e.printStackTrace();
}
Logger.info("Converted");
return outputStream.toString();
}
}
输出如下所示:http://imgur.com/0sTTIe6我已经检查了数据库编码本身。 我错过了什么?
答案 0 :(得分:2)
正如@JasonPlutext建议的那样,我应该创建新的字符串并将编码设置为UTF-8。
return new String(outputStream.toByteArray(), "UTF-8");
这就是我的问题的答案。