在Java中显示Unicode字符

3

我尝试在Java Swing组件中显示一些Unicode字符,该字符范围为Sinhala(80:0D80-0DFF)。这些字母在Eclipse控制台中正确显示,但在JButtons、JTextArea、JTextPane等中显示为方块。

import java.awt.BorderLayout;
import javax.swing.*;

public class Unicode extends JFrame{

    public Unicode(){

        super("ක් කැ කැ කු අ ඉ");

        add(new JButton("ක් කැ කැ කු අ ඉ \u0D88"),BorderLayout.NORTH);
        add(new JTextField("ක් කැ කැ කු අ ඉ"), BorderLayout.CENTER);

        setSize(500,500);
        setVisible(true);
    }

    public static void main(String a[]){
        new Unicode();
    }
 }

我尝试使用字符和字符编码进行显示,但都不起作用。谷歌提供的许多答案都无效。请帮助我。我正在使用Windows 7和Java 1.6。
谢谢...

9
请检查您的字体。 - SLaks
1
最好使用"\uXXXX"格式来表示Unicode字符,这样就可以确保您的代码不会依赖于源文件编码或字体。更好的方法是将所有字符串保存在属性文件中。 - Alexey A.
4
我的摆动规则:正方形框框表示字体问题,问号表示编码问题。 - David Lavender
@Alexery:我尝试使用\uXXX格式,但它没有起作用。 - Sameera Kumarasingha
@SLaks:但是Eclipse控制台显示正确的字体,即使没有更改字体,甚至记事本也能正确显示。 - Sameera Kumarasingha
1
Eclipse不使用Swing,而是采用SWT作为其窗口小部件工具包。Swing默认使用JRE逻辑字体。这看起来像是Swing实现中的字体替换问题。 - McDowell
2个回答

2

请将字体设置为"IskolaPotha"。我认为它可以正常工作(我使用了这种字体)。但是,没有JFrame的Swing组件无法正确显示"ක්‍යෝ"Unicode字符。


1
如果Eclipse能够呈现僧伽罗语字体,那么肯定有包含僧伽罗语字形的字体文件。现在Swing组件无法选择该字体,因此您需要明确强制选择该文件以显示。
为了制定通用解决方案,您需要遍历代码页并查找支持僧伽罗语Unicode范围的代码页。
请参阅此链接以获取更多信息:

http://content.hccfl.edu/pollock/Java/Fonts.htm


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