XML WorkerHelper.getInstance().parseXHtmlを使用してPDFを生成する際の中国語の非表示または文字化の問題

1601 ワード

問題環境:
idea+tomcat
コードクリップ:
String fontPath=getFontPath();
        htmlString="   1p  ";
        document.open();
        try {
            XMLWorkerHelper.getInstance().parseXHtml(writer,document,
                    new ByteArrayInputStream(htmlString.getBytes()),
                    null,
                    Charset.forName("UTF-8"),new XMLWorkerFontProvider(fontPath));
        } catch (IOException e) {
            e.printStackTrace();
            throw new PDFException("PDF      ",e);
        }finally {
            document.close();
        }

問題点:
プロジェクトの配置後に生成されたpdf内の中国語の内容は文字化けまたは表示されない
問題追跡(debug):
シナリオ1:ローカルmain関数呼び出しメソッドによりhtmlString.getBytes長94ビットを取得します.運転結果:pdfコンテンツ表示正常
シナリオ2:tomcatはプロジェクトを実行し、プロジェクトでメソッドを呼び出し、htmlString.getBytesの長さ89ビットを取得します.実行結果:pdfコンテンツの中国語部分に問題が発生
結果:
ideaのデフォルトの符号化方式はUTF-8に調整されているため、後期開発では符号化問題をあまり重視していないが、tomcatは符号化方式を調整していないため、main関数を走るときはすべて正常であり、tomcatが実行された後に問題が発生する.
ソリューション:
htmlString.getBytes()をhtmlString.getBytes(「UTF-8」)に変更