Red Hat Enterprise Linux 5(英文版)安裝 Oracle 10g,字符集選 AL32UTF8 或 ZHS16GBK。資料庫可正常存取中文,但 OEM(Enterprise Manager)網頁介面中:
原因:OEM 按鈕文字是由 Java 端動態生成圖片,缺少中文字體檔案導致渲染失敗。
su - oracle
emctl stop dbconsole
找到以下三個目錄,將 font.properties.zh_CN.Redhat 複製覆蓋 font.properties(建議先備份):
$ORACLE_HOME/jdk/jre/lib$ORACLE_HOME/jre/1.4.2/lib$ORACLE_HOME/javavm/lib/ojvmfontscp font.properties.zh_CN.Redhat font.properties
編輯任一 font.properties,查看最後一行:
filename.-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_CN/TrueType/zysong.ttf
檢查 /usr/share/fonts/zh_CN/TrueType/zysong.ttf 是否存在。若不存在,執行步驟 4。
mkdir -p /usr/share/fonts/zh_CN/TrueType
# 從 Windows C:\Windows\Fonts 複製 STSONG.TTF(華文宋體)或其他中文字體
cp STSONG.TTF /usr/share/fonts/zh_CN/TrueType/zysong.ttf
注意: 檔名必須為 zysong.ttf,與 font.properties 設定一致。
rm -f $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/*.gif
rm -f $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/*.imx
emctl start dbconsole
以瀏覽器訪問 https://host:1158/em,按鈕中文即可正常顯示。
font.properties 對應邏輯字體到實體字體檔。msjh.ttc),只需修改 font.properties 對應行的檔案路徑。$ORACLE_HOME/jdk/jre/lib 等)。此問題純屬缺字體檔與設定檔不匹配,非資料庫字符集問題。依照上述 6 步驟操作,通常 10 分鐘內即可徹底解決 OEM 中文顯示異常。