0

JEdi​​torPane に表示したいサーバーから html 応答を受け取りました。しかし、応答は文字セットを windows-1252 に設定します。これにより、html がレンダリングされないようです。(コメントアウトすると、問題なくレンダリングされます)。

したがって、1つの解決策は、表示する前にそれを解析することですが、応答の編集を避けるために既知のバグや何か他のことができるかどうか疑問に思っていました. ありがとう!

試してみたい場合(3行目をコメントアウトすると表示されます):

public static void main(String args [])
{
    String html = "<!DOCTYPE HTML PUBLIC \"-////W3C////DTD HTML 4.0 Transitional//EN\">" +
        "<HTML>" +
        "<HEAD>" +
        "<META http-equiv=Content-Type content=\"text/html; charset=windows-1252\">" +
        "</HEAD>" +
        "<BODY>" +
        "<P>Hello World</P>" +
        "</BODY>" +
        "</HTML>";
    JEditorPane editor = new JEditorPane("text/html", html);
    editor.setEditable(false);
    JScrollPane pane = new JScrollPane(editor);
    JFrame f = new JFrame("charset=windows-1252");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().add(pane);
    f.setSize(800, 600);
    f.setVisible(true);
}
4

1 に答える 1

1

バグがあります: 4695909 : HEAD セクションに META タグが含まれていると、JEditorPane が HTML BODY を表示できない

METAただし、ディレクティブを使用してそのタグを無視できます。

JEditorPane editor = new JEditorPane();
editor.setContentType("text/html");
editor.getDocument().putProperty("IgnoreCharsetDirective", true);
editor.setText(html);
editor.setEditable(false);

JScrollPane pane = new JScrollPane(editor);
JFrame f = new JFrame("charset=windows-1252");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(pane);
f.setSize(800, 600);
f.setVisible(true);
于 2013-06-17T16:41:22.057 に答える