JOptionPane 中的 UTF-8 字符不正确。

9
请查看以下示例代码,UTF-8字符在Windows机器上显示正常。但是,在Linux机器(Ubuntu)上不正确。
import javax.swing.JOptionPane;

public class JContPaneTest 
{
  public static void main(String[] args) 
  {
    JOptionPane.showMessageDialog(null, "\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u30c7\u30fc\u30bf\u30d9\u30fc", "Error",JOptionPane.ERROR_MESSAGE);
  }
}

有没有办法解决这个问题?

1
这听起来不像是字符编码问题,更有可能是缺少一些字体。 - Stephen C
1
@StephenC,我该如何解决这个问题?你有任何示例代码或文档吗?请发给我。这对我会非常有帮助。 - sprabhakaran
2
在我的Ubuntu 12.04 / OpenJDK上可以工作;请检查“语言支持”和“java -version”。 - trashgod
1
@spk - 我的意思是,这不是你的代码的问题。这是你使用的字体和字符之间的不匹配。方块很可能意味着该字体没有这些代码点的字形。请检查你的安装。 - Stephen C
@VGR,“MS Gothic”字体解决了这个问题。无论如何,感谢您的建议。 - sprabhakaran
显示剩余3条评论
1个回答

2
并非所有字体都包含完整的Unicode字符集。这些模糊的图形很可能是由于字体不足造成的,但在Java中很难确定实际使用的字体,我不知道有什么方法可以确定是否发出了这些模糊图形。
我在弹出菜单中遇到了巨大的Unicode问题,这可能是与您的问题非常相似的问题。
尝试以下两个方法: 1)编写一个字体测试,以显示在Java可用的所有字体中显示您的字符串。 2)尝试使用非Swing组件。 非Swing组件使用底层操作系统的字体支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接