fedora下java中文乱码,完美又简单解决Fedora16下使用Sun-JDK的汉字乱码(口口)问题

完美又简单解决Fedora16下使用Sun-JDK的汉字乱码(口口)问题

这里的问题属于字体问题,只会在AWT/Swing的java程序中出现问题,原因是jre使用了不正确的fontconfig,表现为在zh_CN的窗口环境下,netbeans的菜单汉字显示为"口口",此时,jre读取的字体配置文件内容是错误的,配置文件可能是以下两个之一(这些文件跟Fedora16的中文字体配置完全不匹配):

/opt/java/jdk1.6.0_32/jre/lib/

fontconfig.bfc

fontconfig.RedHat.bfc

注1:

SWT使用操作系统原生组件,所以基本上只要窗口环境能正常显示汉字,eclipse就没问题

注2:

在这里不提fallback, 因为它是jdk1.4时代以前的东西

参考了若干资料:

[官方说明]

http://docs.oracle.com/javase/1.5.0/docs/guide/intl/fontconfig.html

[详细的解释]

http://www.cnblogs.com/super119/archive/2011/01/03/1924534.html

http://forum.ubuntu.com.cn/viewtopic.php?f=70&t=76414

如果看明白上面的文档,肯定能解决问题,但问题是太麻烦了,这里介绍个捷径:

1.安装sun-jdk 1.6.0_32

2.进入/jre/lib目录,备份所有以fontconfig开头的文件

3.把fontconfig.RedHat.6.bfc文件复制到/jre/lib并改名为fontconfig.RedHat.bfc或fontconfig.RedHat.16.bfc(Fedora和RHEL都被java认为是RedHat, 16是版本号-可忽略),此文件的文本描述请参考同名的properties.src文件

4.确保安装了cjk-uming字体(可以用yum安装)

5.这时可以正常启动AWT/Swing程序了(比如NetBeans)

附1:如果想使用其它字体文件,则可以使用fontconfig.RedHat.6.properties.src改名为fontconfig.RedHat.16.properties,并修改它的内容

附2:jdk7反而没有RedHat.6文件,只有5.5的,太奇怪了,还好copy过去一样可以用

这里也有个手工方法:

http://www.kuugee.com/index.php?option=com_content&view=article&id=1:linuxnetbeans&catid=4:linux&Itemid=2

©著作权归作者所有:来自51CTO博客作者salomi的原创作品,如需转载,请注明出处,否则将追究法律责任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值