Linux下Java程序中中文顯示的一些問題的總結

此處一般指應用程序,不是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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章