問題背景:為何DB2 Control Center顯示亂碼?
DB2 Control Center(控制中心)基於Java Swing開發,其中文顯示依賴JRE字型映射檔(`font.properties.zh`)將邏輯字型名稱(如 `SansSerif`、`Dialog`)對應到實體字型檔(`.ttf` 或 `.ttc`)。當映射檔指向的字型檔不存在、副檔名錯誤,或作業系統地區設定與JRE預期不符時,介面即會出現方塊字、亂碼或缺字。
三大解決方案(按成功率排序)
方案一:修正字型映射檔副檔名(最推薦,成功率最高)
原理: Windows系統中文標準字型「新細明體」為TrueType Collection(`.ttc`)格式,但舊版DB2映射檔誤指為單一TrueType Font(`.ttf`),導致JRE找不到字型。
- 以系統管理員身分開啟檔案總管,定位至:
D:\Program Files\IBM\SQLLIB\java\jdk\jre\lib\font.properties.zh
(路徑視安裝目錄而異,關鍵在 `jre\lib\` 下)
- 備份原檔(建議命名為 `font.properties.zh.bak`)
- 使用記事本或Notepad++開啟,搜尋:
filename.SimSun=SimSun.ttf
- 修改為:
filename.SimSun=SimSun.ttc
- 儲存檔案,重新啟動DB2 Control Center
補充: 若系統安裝多套中文字型(如微軟正黑體 `msjh.ttc`),亦可同步修改 `filename.Microsoft_JhengHei=msjh.ttc`,提升介面美觀度。
方案二:調整Windows地區與語言設定(治本,解決系統層級不一致)
適用情境: 方案一無效,或多套Java應用程式同時出現中文顯示異常。
- 開啟「控制台」→「時鐘與地區」→「地區」
- 「格式」頁籤:格式選擇「中文(台灣)」或「中文(中國)」
- 「系統管理」頁籤 → 「變更系統地區設定」 → 核取「Beta版:使用Unicode UTF-8提供全球語言支援」取消勾選(此選項常導致舊版Java字型映射失效)
- 「目前的系統地區設定」確認為「中文(台灣)」或「中文(中國)」
- 重啟電腦後再啟動Control Center
原理: JRE啟動時讀取 `user.language`、`user.region`、`file.encoding` 系統屬性,決定載入哪個 `font.properties.<語系>` 檔。系統地區設定錯誤會導致載入錯誤映射檔或預設英文映射檔。
方案三:替換完整字型映射檔(終極備援)
操作: 從正常運作的同版本DB2環境(或IBM官方修補包)複製完整的 `font.properties.zh` 覆蓋現有檔案。
- 取得正確映射檔來源:
- 同版本正常主機 `jre\lib\font.properties.zh`
- IBM Fix Central 下載對應版本 `db2cc_fixpack` 解壓縮取得
- 停止所有DB2 Java進程(Control Center、Configuration Assistant、Command Editor等)
- 覆蓋目標檔案:
copy /Y font.properties.zh "D:\Program Files\IBM\SQLLIB\java\jdk\jre\lib\"
- 重新啟動驗證
驗證與後續維護
- 快速驗證: 開啟Control Center → 「檢視」→ 「字型大小」調整,觀察中文選單、表格資料是否正常渲染。
- 防止覆蓋: DB2 Fix Pack升級可能覆蓋映射檔。建議將修正後的 `font.properties.zh` 納入部署腳本,或建立排程任務定期校驗檔案雜湊值。
- 高版本注意: DB2 11.5+ 採用Eclipse-based Management Console(取代Swing版Control Center),亂碼問題大幅減少。若仍使用舊版CC,建議規劃遷移至Data Management Console或命令列工具(`db2`、`db2pd`、`db2top`)。
附圖:修正前後對照

總結
DB2 Control Center中文亂碼本質是JRE字型映射檔與實體字型檔不匹配。優先採用方案一(修正.ttc副檔名),成本最低、見效最快;輔以方案二(系統地區設定)治本;方案三(替換映射檔)作為備援。長遠規劃應逐步淘汰Swing介面工具,轉向現代化管理介面。