Docx4j:HTML输出中的字符集编码

时间:2014-10-09 13:14:48

标签: docx4j

我正在尝试将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我已经检查了数据库编码本身。 我错过了什么?

1 个答案:

答案 0 :(得分:2)

正如@JasonPlutext建议的那样,我应该创建新的字符串并将编码设置为UTF-8。

return new String(outputStream.toByteArray(), "UTF-8");

这就是我的问题的答案。