java - UTF-8 和 JTextArea

标签 java

我有 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);
    }
}

enter image description here


因此,如果您有一个包含此类字符的长文本,则需要逐个字符地遍历字符串,(使用 getCharAt(int) getChars()) 并使用 String.format("\\%04x", (int) c.charValue()); 处理每个字符,并将结果附加到目标字符串。 (最好使用 StringBuffer。)

关于java - UTF-8 和 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871328/

相关文章:

java - Jenkins/Artifactory-无法找到方法create()

java - 如何将 Facebook 登录和电子邮件注册添加到我的 Google Cloud Endpoints 应用程序 (Java)?

java - 如何使用二分搜索比较 x509 证书

java - 如何存储和修改账户余额:

java - 404 错误配置与预编译的 jsp 不工作

java - 使用java日历获取一年中的一周,星期日作为一周的第一天

java - 在java中使用CDI注入(inject)多个log4j记录器类型

java - 为什么重写的方法不表现出多态行为?

Java 选项卡顺序 : How to set Tab order in java swing table

java.lang.IllegalArgumentException : Result Maps collection already contains value for 异常