中文字元亂碼的解決

li__hl8888發表於2016-06-22

問題描述:在使用XMLP做報表的過程中,經常會遇到亂碼的情況。

導致亂碼的原因有兩種:字符集的問題和字型定義的問題。

字符集引起的亂碼   :一般亂碼成不規則性的。

字型定義引起的亂碼:一般亂碼是規則的,一般為(反?)

一. 字符集的問題

   解決方法:

1. 在PL/SQL中輸出XML時,頭資訊的編碼為:

output('<!--?xml version="1.0" encoding="' || 

2.  修改EBS系統首選項:   客戶機字元編碼修改為:Unicode(UTF-8),修改首選項會影響到配置檔案

     FND: NATIVE CLIENT ENCODING的值。

3.  直接修改FND: NATIVE CLIENT ENCODING的值,使客戶機的編碼與伺服器保持一致。

4. 注意事項:

   ORACLE的字符集命名(非國際標準)和XML規範(IANA國際標準)不一致,我們還不能直接根據Oracle的字符集來設定XML字符集,需要根據下表對映設定(也可以透過utl_gdk.charset_map來獲得對映關係):     

二. 字型定義的問題

      解決步驟:

       1. 檢視$OA_JRE_TOP/jre/lib/fonts目錄下是否包含類似ALBAN*.ttf 的檔案。

      2. 如果沒有,從EBS的$FND_TOP/resource 下複製一份,

            使用命令:         

cp $FND_TOP/resource/ALBAN*.ttf        $OA_JRE_TOP/jre/lib/fonts 

     3. 重啟應用。問題就可以解決。

     4. 原理:預設情況下,XMLP不支援中文,原因僅僅是缺少字型。因為XMLP採用Java編寫,理論上Java支援任何語種。EBS自帶了中文字型,但沒有安裝到XMLP目錄。因此要做個複製.

  5. XMLP預設輸出格式為HTML的時候,開啟時所使用的字型是$OA_JRE_TOP下的。使用EXCEL和PDF時使用的是$FND_TOP下面的字型

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8568259/viewspace-2120770/,如需轉載,請註明出處,否則將追究法律責任。

相關文章