如何解决Oracle10g EM乱码问题

来源:岁月联盟 编辑:zhuzhu 时间:2009-01-08
    安装完Oracle10g后,一切都正常。但是当客户端浏览器的首选语言选择为中文(Chinese/China[zh-cn]),登录EM时,EM的按钮(图片)可能会出现乱码(EM会根据客户端设置自动选择显示语言)。原来我也遇到了相传已久的乱码问题。如下图:
 
(Firefox语言选项设置)
 
(EM按钮出现乱码)
    据说,如果安装时,我们系统环境变量设置的是中文环境(而我的RHEL5.2恰恰是选择的英文环境),那么就不会有这个问题。这个问题根本原因在于安装时,JDK/JRE字符集的自动选择。还好有网络,有Google,经过搜索,有很多关于这个问题的解决办法(但大多是同一篇文章)。照葫芦画瓢,跟着做吧:

    在 $ORACLE_HOME/jdk/jre/lib$ORACLE_HOME/jre/1.4.2/lib目录下都有多种字符集字体配置文件:

[oracle@RHEL ~]$ cd $ORACLE_HOME/jdk/jre/lib
[oracle@RHEL lib]$ ls font*zh_CN*
font.properties.zh_CN.Redhat     font.properties.zh_CN.Sun
font.properties.zh_CN.Redhat2.1  font.properties.zh_CN_UTF8.Sun
[oracle@RHEL lib]$ cd $ORACLE_HOME/jre/1.4.2/lib/
[oracle@RHEL lib]$ ls font*zh_CN*
font.properties.zh_CN.Redhat  font.properties.zh_CN.Redhat2.1 
font.properties.zh_CN.Sun  font.properties.zh_CN_UTF8.Sun 

    我们只要用合适的中文字符集文件替换缺省文件即可,我选择使用font.properties.zh_CN.Sun来替换缺省字体定义文件:

[oracle@RHEL lib]$ cp font.properties font.properties.bak 
[oracle@RHEL lib]$ cp font.properties.zh_CN.Sun font.properties 

    替换之后需要清理一下Cache,重启EM即可.

    Cache路径通常位于:

$ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs 

    清除所有gif文件即可.然后重新启动EM:


[oracle@RHEL lib]$ emctl stop dbconsole
TZ set to UTC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0 
Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.
http://RHEL.smnpc.com:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
 ...  Stopped.
[oracle@RHEL lib]$ emctl start dbconsole
TZ set to UTC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0 
Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved.
http://RHEL.smnpc.com:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 10g Database Control ........................ started.
------------------------------------------------------------------
Logs are generated in directory /usr/app/oracle/product/10.2.0/db_1/RHEL.smnpc.com_orcl/sysman/log

    按照网络上的说法,只要重新登录EM,那么就应该显示正常了。但是,世界上的事终究不是那么一帆风顺,按照古人的说法就是前途光明,道路曲折,问题依然存在。又找了N久,还是没找到解决办法。想来想去,还是觉得这条路或者思路应该是正确的,问题是出在某个地方。查看font.properties(也就是font.properties.zh_CN.Sun)的内容,发现了其中端倪:

filename.-misc-fzsongti-medium-r-normal--*-%d-*-*-p-*-gbk-0=/usr/X11R6/lib/X11/fonts/truetype/songti_gb.ttf
appendedfontpath=/usr/X11R6/lib/X11/fonts/truetype

  恍然大悟,因为这个字体文件根本不存在。修改成已有的中文字体文件:
#filename.-misc-fzsongti-medium-r-normal--*-%d-*-*-p-*-gbk-0=/usr/X11R6/lib/X11/fonts/truetype/songti_gb.ttf
filename.-misc-fzsongti-medium-r-normal--*-%d-*-*-p-*-gbk-0=/usr/share/fonts/chinese/TrueType/STSONG.TTF
# appendedfontpath=/usr/X11R6/lib/X11/fonts/truetype
appendedfontpath=/usr/share/fonts/chinese/TrueType

    再次重启EM,登录。OMG,正常了

出处:http://blog.sina.com.cn/s/blog_3f2ef1180100buwm.html