Linux下Java程序中中文显示的一些问题的总结

类别:Java 点击:0 评论:0 推荐:

此处一般指应用程序,不是WEB App.(或者是web app中生成的统计图形等)

通用处理原则: 1.存在中文字体 2.jre能找到中文字体 3. font.properties.xx.xx 和你的系统正确对应

我以Red Hat Enterprise Linux AS release 3 (Taroon Update 2) , LANG=zh_CN.GB18030, jdk 1.4.2_02  为例,说一下过程

(自己要按照自己的情况变化,不要照搬,例如我按照下面摘抄的就不行)

1.发现存在中文字体 /usr/share/fonts/zh_CN/TrueType

2.jre的lib目录下有 font.properties.zh_CN.Redhat8.0 ,但是我的redhat不是8.0 ,改成Redhat应该通用,于是复制一份到 font.properties.zh_CN.Redhat ,看看内容,发现里面已经设置了中文字体,最后一行也指明了中文字体的路径,于是 不用修改任何东西了

3.重新启动程序/或者webserver ,ok 显示成功了

 

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

下面的内容从各处摘抄而来.

1. Mandrake Linux 8.2 、JDK 1.4.1  ( 【作者:家居猫】 )

===============================================

   很多朋友在 Linux 下使用 Java 开发应用程序时发现中文显示不正常,在窗口应用中的中文显示为一串方块。这主要是由于字体设置不正确。JDK 自带的配置文件中,它所指定的中文字体不存在而造成了显示不正确。本文以 Mandrake Linux 8.2 、JDK 1.4.1 为例,简单的介绍了在 Linux 下 Java 中文环境的设置方法。其它 Linux 系统或 JDK 版本可参照本文作相应调整。

    首先,检查你的 /usr/share/fonts/ttf/gb 目录下是否装有中文字体 gbsn00lp.ttf 。如果没有,也可以用 Windows 字体目录下的 song.ttf 来代替。将字体文件拷贝到 Java 安装目录下的 jre/lib/fonts 下。

    第二,修改 Java 安装目录下的 jre/lib/fonts/fonts.dir 文件,将首行的 72 改为 73,然后添加下列内容:

        gbsn00lp.ttf -Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0

        注意:如果你用的是 song.ttf ,则应该将头部的 gbsn00lp.ttf 改为 song.ttf 。

    第三,在 Java 安装目录下的 jre/lib 目录中,将字体配置文件 font.properties.zh.Turbo 复制为 font.properties.zh 。然后修改 font.properties.zh 。将文件中所有的:

        -tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0 替换为:
        -Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0

    第四,用 JDK 自带的演示程序 SwingSet2 测试,如果看到中文菜单则说明设置成功。

===============================================

2. Java , Installanywhere 在 Redhat 上的中文问题解决方法     jacklondon [原作]

标准 jre/jdk 中只带了 redhat 6 的 font.properties, 我在 redhat 7.3 和 redhat 8.0 上都不能用。我们需要建一个 font.properties.zh.Redhat 放在 redhat 的 jre/lib 目录下。打开 /usr/lib/X11/fonts/ttf-zh 或者 /usr/share/fonts/zh_CN/TrueType 下面的 font.dir, 将其中的一个中文字体名复制下来,比如 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1,按照 java 的字体规则改为 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1,将 font.properties.zh 中的内容复制到 font.properties.zh.Redhat 中。

我选用字体 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1 是因为在 redhat 7.3 和 redhat 8.0 上都能用。

因为 jre/jdk 找不到 Redhat 的 true type 字体,在文件 font.properties.zh.Redhat 最后加入

appendedfontpath=/usr/lib/X11/fonts/ttf-zh
appendedfontpath=/usr/share/fonts/zh_CN/TrueType

将字体名全部替换成 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

本文地址:http://com.8s8s.com/it/it16216.htm