我已经在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库现在能否将这些字符粘贴到文本字段中?
谢谢您抽出宝贵的时间!