首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Linux 下 Oracle 10g OEM 中文顯示方框問題徹底解決

     編輯:Oracle 資料庫基礎

問題現象

Red Hat Enterprise Linux 5(英文版)安裝 Oracle 10g,字符集選 AL32UTF8 或 ZHS16GBK。資料庫可正常存取中文,但 OEM(Enterprise Manager)網頁介面中:

  • 頁面文字正常顯示中文。
  • 按鈕、選單、對話框等 UI 元件的中文全變成方框(□)。

原因:OEM 按鈕文字是由 Java 端動態生成圖片,缺少中文字體檔案導致渲染失敗。

解決步驟

1. 停止 OEM

su - oracle
emctl stop dbconsole

2. 覆蓋字體設定檔

找到以下三個目錄,將 font.properties.zh_CN.Redhat 複製覆蓋 font.properties(建議先備份):

  • $ORACLE_HOME/jdk/jre/lib
  • $ORACLE_HOME/jre/1.4.2/lib
  • $ORACLE_HOME/javavm/lib/ojvmfonts
cp font.properties.zh_CN.Redhat font.properties

3. 確認字體檔案路徑

編輯任一 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。

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 設定一致。

5. 清除 OEM 圖片快取

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

6. 重新啟動 OEM

emctl start dbconsole

以瀏覽器訪問 https://host:1158/em,按鈕中文即可正常顯示。

原理說明

  • OEM 使用 Java AWT 在伺服器端生成按鈕圖片,依賴 font.properties 對應邏輯字體到實體字體檔。
  • 英文版 Linux 缺少中文字體目錄與檔案,導致 fallback 失敗顯示方框。
  • 覆蓋 Redhat 專用字體設定檔並提供實體 TTF,即可解決渲染問題。

進階提示

  • 可自行選擇偏好字體(如微軟正黑體 msjh.ttc),只需修改 font.properties 對應行的檔案路徑。
  • Oracle 11g/12c 同理,但目錄路徑可能不同($ORACLE_HOME/jdk/jre/lib 等)。

結語

此問題純屬缺字體檔與設定檔不匹配,非資料庫字符集問題。依照上述 6 步驟操作,通常 10 分鐘內即可徹底解決 OEM 中文顯示異常。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved