在 Java JTextArea 中显示 Unicode

Posted

技术标签:

【中文标题】在 Java JTextArea 中显示 Unicode【英文标题】:Displaying Unicode in a Java JTextArea 【发布时间】:2011-03-17 00:16:53 【问题描述】:

我正在尝试在 JTextArea 中打印 unicode。我已经让它很好地打印到控制台,但是当我尝试将它打印到 textarea 时,我得到了所有两个字节 unicode 字符的框。任何帮助将不胜感激。

package edu.afit.jieddo; 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JTextAreaDemo extends JFrame 
   StringBuffer m = new StringBuffer("\u14c7 \u14c4 \u1557 \u00d6");
   StringBuffer m2 =new StringBuffer(" means one.");
   String message = m.append(m2).toString();

   public JTextAreaDemo() 
      super("\u14c7 \u14c4 \u1557 \u00d6");
      java.awt.Font font = new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 18);
      JTextArea textArea = new JTextArea(message);
      textArea.setFont(font);

      java.awt.Container container=this.getContentPane();
      container.add(textArea);
      System.out.println(textArea.getFont().getFamily());// testing output in the command line
   

   public static void main(String[] args)  
      JTextAreaDemo frame = new JTextAreaDemo();
      frame.setFont(new Font("Arial Unicode MS",Font.ITALIC,11));
      frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
      frame.pack();
      frame.setVisible(true);
     System.out.println("\u14c7 \u14c4 \u1557 \u00d6");
      System.out.println(frame.getFont().getFamily());//testing output in the command line
   

【问题讨论】:

【参考方案1】:

在这些 Unicode 字符中,Arial Unicode MS 仅提供 U+00d6。

尝试使用DejaVu Sans。

顺便说一句,FileFormat.info 是 Unicode 字符的绝佳资源。只需将此 URL 中的 XXXX 替换为 unicode 编号即可: http://www.fileformat.info/info/unicode/char/XXXX/index.htm 。例如:http://www.fileformat.info/info/unicode/char/14C7/index.htm

【讨论】:

德文,完美!虽然我没有 DejaVu Sans,但我确实有 Euphemia 并立即修复了它。非常感谢! dejavu 断开链接【参考方案2】:

在我可能从未听说过“Arial Unicode MS”的 Ubuntu 系统上,您的程序可以毫无改变地完美执行。我在标题栏和文本区域看到的前两个字符看起来像蜗牛,指向不同的方向。或者像小写的db 仰面躺着。

除了大小发生变化外,当我删除 setFont 调用时,我看到的字符相同。

因此,我有根据地猜测您使用的字体不包含这些字符。错误,这些字符的字形。

Windows 中有一个字体查看器实用程序,您可以在其中查看字体中的所有字符。蜗牛出现了吗?

【讨论】:

卡尔,非常感谢你让我知道我没有疯。我花了一周时间查看看起来不错的代码并在留言板上留下未答复的消息。我很高兴我找到了***!周末愉快!

以上是关于在 Java JTextArea 中显示 Unicode的主要内容,如果未能解决你的问题,请参考以下文章

突出显示 JTextArea 中的特定文本 - Java

java中 JTextArea类的属性和方法是啥

java 怎么在JtextArea里设置滚动条

Java Netbeans 8.0 Jframe GUI程序 - arraylist中的每个索引值都没有显示在jtextArea中的各行上

Java / Swing:JScrollPane中的JTextArea,如何防止自动滚动?

在 JtextArea 的末尾添加一个新行