我有 2 个 JTextArea,其中一个包含这样的 Unicode 代码点\u0645 我想要另一个 JTextArea
显示此 Unicode 代码点的字符表示。但是当将此代码点传递给 JTextArea 时,它会显示
代码点不是字符,但如果我直接将代码点设置为 JTextArea setText 方法,它就可以正常工作!
为什么?我可以将代码点字符串从一个 JTextArea 传递到另一个吗?
谢谢
最佳答案
此代码显示一个字符,并在另一个文本区域中显示相应的“unicode 字符串”副本:
import java.awt.*;
import javax.swing.*;
public class FrameTest {
public static void main(String[] args) {
JFrame jf = new JFrame("Demo");
Container cp = jf.getContentPane();
cp.setLayout(new BorderLayout());
JTextArea ta1 = new JTextArea(20, 20);
JTextArea ta2 = new JTextArea(20, 20);
Character c = '\u0645';
ta1.setText("" + c);
String s = String.format("\\%04x", (int) c.charValue());
ta2.setText(s);
cp.add(ta1, BorderLayout.WEST);
cp.add(ta2, BorderLayout.EAST);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(500, 100);
jf.setVisible(true);
}
}
因此,如果您有一个包含此类字符的长文本,则需要逐个字符地遍历字符串,(使用 getCharAt(int)
或 getChars()
) 并使用 String.format("\\%04x", (int) c.charValue());
处理每个字符,并将结果附加到目标字符串。 (最好使用 StringBuffer
。)
关于java - UTF-8 和 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871328/