Java Swing - JTextField/JTextArea无法粘贴补充unicode字符

Loc*_*sax 5 java unicode utf-16 paste

我已经对stackoverflow和Google进行了详尽的搜索,但到目前为止我还没有找到其他类似问题的人.

在示例Java Swing测试程序中,我创建了一个简单的JTextField,以便我可以尝试从网页(http://isthisthingon.org/unicode/)中将字符粘贴到其中.当我用'㓿'(代码点13567)进行测试时,它可以粘贴角色.此字符是CJK表意文字扩展A平面中最后列出的字符.但是,当我移动到下一个相关平面时,CJK表意文字扩展B,试图复制并粘贴字符''(代码点131072)失败.它不会渲染一个方框或任何形式的字形,看起来好像我根本没有任何系统剪贴板.

我意识到CJK表意文字扩展B是一组被认为是"补充"的字符,当Java在内部将它们编码为UTF-16时需要两个16位块而不是一个.进一步的测试证明,如果我将文本硬编码到显示区域,我就能显示补充字符.

这是使用Windows 7和Java 6测试的.

我知道,从Java 5开始,添加了对补充unicode字符的支持,但是,我想知道为什么(或者如果)swing中的剪切和粘贴功能仍然不允许我粘贴这些字符.在使用JTextField或JTextArea类时,还需要做些什么来告诉Java处理这些字符吗?还有一种方法可以让Java的Swing库能够将这些字符粘贴到文本字段中吗?

感谢您的时间!

Loc*_*sax 2

我一发布这篇文章,我可能就找到了答案。这是JDK 中长期存在的错误