如何在JEditorPane中使用charset = windows-1252显示html

时间:2013-06-17 15:28:05

标签: java html jeditorpane

我从服务器获得一个html响应,我希望在JEditorPane中显示。但是响应将charset设置为windows-1252,这似乎不会导致html渲染。 (当我发表评论时,它会很好地呈现)。

所以,一个解决方案是在我尝试显示它之前解析它,但我想知道是否存在已知错误或我可以做的任何其他事情以避免编辑响应。谢谢!

如果您想尝试它(如果您注释掉第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);
}

1 个答案:

答案 0 :(得分:1)

有一个错误:4695909 : JEditorPane fails to display HTML BODY when META tag included in HEAD section

但您可以使用指令忽略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);