Java JTextPane HTML 编辑器 UTF-8 字符编码
我使用 JTextPane 作为简单的 html 编辑器。
jtp=new JTextPane();
jtp.setContentType("text/html;charset=UTF-8");
jtp.setEditorKit(new HTMLEditorKit());
当我调用 jtp.getText() 时,我得到了很好的 html 代码,其中所有特殊字符都被转义。但我不想转义国家字符(波兰语),而只想转义特殊的 html 字符,例如 &、<、> 当我进入编辑器时,
<foo>ą ś &
我得到了
<foo>ą ś &
,但我想得到
<foo>ą ś &
它是如何可能的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不幸的是,这是不可能的。
javax.swing.text.html.HTMLWriter -- 它被硬编码以将任何非 ASCII 的符号转换为其数字表示形式:
无法以任何方式控制此逻辑。
但是如果您真的非常需要该功能,您可以做疯狂的事情:
HTMLWriterHack
(在同一个包javax.swing.text.html
中并重命名其中的所有字符串)output
替换为类似的内容output(String.valueOf(chars[counter]));
HTMLDocumentHack
(在同一个包javax.swing.text.html
中,重命名里面的所有字符串,使其扩展HTMLDocument
并删除冲突方法)尽管上述步骤有效(我测试过),但我当然不建议这样做。
That's not possible, unfortunately.
There's a flaw inside javax.swing.text.html.HTMLWriter -- it is hardcoded to convert any symbol that is not ASCII to its numeric representation:
This logic cannot be controlled in any way.
BUT If you really really need that functionality you could do the crazy stuff:
HTMLWriterHack
(in the same packagejavax.swing.text.html
and renaming all strings inside)output
lines with something likeoutput(String.valueOf(chars[counter]));
HTMLDocumentHack
(in the same packagejavax.swing.text.html
, renaming all strings inside, making it extendHTMLDocument
and removing clashing methods)Although the steps above work (I tested it), I certainly wouldn't recommend doing that.
这是不可能的,代码127以上的所有字符都被转换为数字实体& # 号;。 HTML 实体被转换为命名实体&等等。因此您可以轻松地重新替换它们。 (这是在 HTMLWriter.output 中完成的,并且似乎没有提供任何字符集。)
It is not possible, all characters above code 127 are translated to a numeric entity & # number ;. The HTML-entities are translated into named entities & lt ; , and so on. So you may easily resubstitute them. (This is done in HTMLWriter.output, and there seems to be no provision for character sets whatsoever.)