Java 应用中汉字显示成方块(方格)乱码的几种解决方法

Java 应用中汉字显示成方块(方格)乱码的几种解决方法
1.在 jre/lib/fonts/ 下建立个目录 fallback
mkdir /usr/lib/jvm/java-1.5.0-sun/jre/lib/fonts/fallback/

2.在 fallback 里弄个中文字体
拷贝或链接都可以
ln -s /usr/share/fonts/truetype/arphic/uming.ttf /usr/lib/jvm/java-1.5.0-sun/jre/lib/fonts/fallback/

3.进入 jre/lib/fonts/fallback/ 执行 mkfontscale
再把 jre/lib/fonts/fallback/fonts.scale 的内容加到 jre/lib/fonts/fonts.dir
cd /usr/lib/j2sdk1.5-sun/jre/lib/fonts/fallback/
mkfontscale
cd ..
cat fallback/fonts.scale >> fonts.dir
-----------------------------------------------------------
Jinitiator控件IE崩溃及Jinitiator界面汉字方框的解决办法

前几天拿到的一套网络销售系统原来还有个类似ERP的管理后台,折腾了半天才架设起来并找到入口,类似http://IP:7778/forms/frmservlet?config=webutil&form=main,初步了解了下,好像是用Oracle Form builder开发的。在原来就安装好Jinitiator控件的一台服务器上(Windwos Server 2003操作系统)用IE打开这个网址,然后会弹出个类似JVM的界面,但界面上的汉字都是乱码的,就是显示成黑色线的方框。
网上搜索了下,说是将Jinitiator安装目录C:\Program Files\Oracle\JInitiator 1.3.1.22\下的lib文件夹里的font.properties.zh.5.1复制一份,重命名为font.properties.zh.5.2即可解决,试了下,果然成功了。
为了方便查看系统,同事就在他的办公电脑(Windows 7)上也浏览器那个网址,并按提示安装了Jinitiator控件,但是安装完成后用IE浏览器这个网址直接就崩溃了。我也在自己的笔记本上(Windows Server 2008)安装此控件,用IE打开也直接崩溃,用Maxthon打开,提示:
Maxthon 阻止了一个错误.
Fault address: 6D4AC228 03:00014228 C:\PROGRA~1\Oracle\JINITI~1.22\bin\hotspot\jvm.dll
然后就崩溃了。
同事说难道Win7之类的系统与这个控件不兼容?找了台装有Windows XP的电脑试了下,依旧崩溃。
网上查了下资料,看到有人说Jinitiator和JVM其实是差不多的东西,我就想尝试下安装个JDK看看能不能解决。先是把Jinitiator卸载了,然后安装JDK,试了下还是失败,再把Jinitiator装上去,依旧不成功。
回顾了下整个过程,我又注意到Maxthon下的错误提示,是与jvm.dll有关的,那把JDK下的jvm.dll复制过来替换了,是否能行呢?搜索下JDK安装目录,找到三个jvm.dll文件,分别在“Java\jre6\bin\client”、“Java\jdk1.6.0_10\jre\bin\client”和“Java\jdk1.6.0_10\jre\bin\server”目录下,前两个文件大小是一样的,我猜是同样的文件,还有一个文件稍大,用哪个好呢?既然是在运行客户端,那就用client目录下的吧,替换后,再次打开那个网址,再也不崩溃了。
一波刚平一波又起,IE是不崩溃了,打

开的界面同样是乱码的,并且用刚刚那个办法无法解决。再次上网搜索,很快找到解决办法:
在Jinitiator安装目录的lib文件夹中找到font.properties.zh,把里面的
filename.\u5b8b\u4f53=SIMSUN.TTF
改为
filename.\u5b8b\u4f53=SIMSUN.TTC
即可
------------------------------------------------------------------------------------
Ubuntu下 JAVA GUI 程序汉字显示为方框解决办法

在Ubuntu下运行JAVA GUI应用程序时发现里面的汉字都是显示为方框,同时我系统中部分应用程序打开时里面的汉字也显示为方框。

试着移除 /etc/fonts/conf.d/49-sansserif.conf 但是没效果

现在Linuxidc搜集整理了一些解决办法:

一、

出现方框字的原因是java 运行环境中找不到相应的字体,所以想到把系统的字体拷贝到java运行环境下去,方法如下:

cd /usr/local/jdk1.5.0_16/jre/lib/fonts/fallback //首先进入你的jdk安装路径下的字体位置

sudo cp /usr/share/fonts/truetype/arphic/uming.ttc ./ //拷贝系统中的字体到该目录下

sudo mkfontdir //让设置字体生效

sudo mkfontscale

这个时候再去看看,一切正常了 哈哈!

二、也许上面也是个办法,我没实验过,不过我们要搞清楚,其实这个问题出现的原因是java配置文件的一个小BUG,他把字体后缀ttc弄错成了ttf。

最简单的解决办法是:

编辑配置文件

sudo gedit /usr/lib/jvm/java-6-sun/jre/lib/fontconfig.properties

找到

filename.-arphic-ar_pl_shanheisun_uni-medium-r-normal--*-*-*-*-p-*-iso10646-1=/usr/share/fonts/truetype/arphic/uming.ttf

filename.-arphic-ar_pl_uming_uni-medium-r-normal--*-*-*-*-p-*-iso10646-1=/usr/share/fonts/truetype/arphic/uming.ttf

后缀改成ttc就可以了,因为我们usr/share/fonts中的文件就是uming.ttc而不是ttf结尾。

相关文档
最新文档