萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 495|回复: 0

1-1-16-1-12 后天答辩,HELP,LINUX下JAVA的中文问题?

[复制链接]
发表于 2003-2-8 00:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
发信人: dreamonsky (我是一条鱼), 信区: Java      
标  题: Re: 后天答辩,HELP,LINUX下JAVA的中文问题?
发信站: BBS 水木清华站 (Sat Jun 22 21:07:47 2002)

详情请查阅linux的精华区


    其实说起来 Java 的中文问题非常简单, 有两个重要因素, 一个是编译时
的编码(encoding), 另一个是字体. 这两个缺一不可.
    一, 编译时的编码: 指的是编译 Java 的源程序时指定的编码格式, 即使用

javac -encoding MyEncoding MyJavaFile.java
   
编译 MyJavaFile 时 -encoding 所指定的 MyEncoding. 通常中文的编码有
大陆和新加坡使用的 GB2312 以及 台湾和香港使用的 Big5, 普通英文用的是
ISO_8859_1. 这里只关注 GB2312. 如果在编译的命令行中指定了编码, 那么就
使用指定的编码格式, 如果没有指定, 将使用系统缺省的编码格式, 在 windows
的中文简体版下都是 GB2312, 而 Linux 下不同的终端可以有不同的编码, 可以
直接设置环境变量 LC_ALL LANG 等指定相应的不同类型信息的编码, 比如数字,
日期, 货币, 姓名等等. 可以用 locale 命令来看当前终端所有的编码. 在
Java 程序中可以使用 System.getProperty("file.encoding"); (注 1) 来获取
当前的编码格式. 好了, 当编译的时候, 源码中的中文字符串都会按照指定的
或者缺省的编码格式映射为相应的 UNICODE , 而不是看做简单的 ASCII 字符.
所以编码格式就是处理源码中的各种各样的字符, 与运行时无关, 所以如果你的
源文件中没有直接需要使用中文的地方, 比如菜单, 按钮, 标签什么的, 就不需
要指定编码了.
    二, 字体的选择: 必须使用能够显示中文的字体, 好象有些废话. 但还是有
必要说一说. AWT 可以在中文系统中直接显示中文, 但是在不是中文系统但是有
中文字体的系统中不能, 需要修改一下 $JAVA_HOME/jre/lib/font.properties,
加入中文字体, 至于怎么加入, 就不谈了. 而 Swing 不需要这样, 只要你的系统
中有中文字体就可以使用这样的字体来显示中文. 怎么知道一种字体能不能显示
中文呢? 看下面的程序片段: (注 2)


  1.         Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAl
  2. lFonts();
  3.         System.out.println("Chinese Fonts: \n");
  4.         for (int i = 0; i < fonts.length; i ++)
  5.         {
  6.             if (fonts[i].canDisplayUpTo("\u4e00") > 0)   // 注 3
  7.             {
  8.                 System.out.println(fonts[i].getFontName());
  9.             }
  10.         }
复制代码

   
好了, 知道了系统中有没有中文字体, 然后选择一个就是了. 如果选择了不能显示
中文的字体, 通常的情况是显示方框.
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-6-3 15:03 , Processed in 0.052269 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表