Linux下Java程序中中文显示的一些问题的总结

原创 2004年08月12日 17:01:00

此处一般指应用程序,不是WEB App.(或者是web app中生成的统计图形等)

通用处理原则: 1.存在中文字体 2.jre能找到中文字体 3. font.properties.xx.xx 和你的系统正确对应

我以Red Hat Enterprise Linux AS release 3 (Taroon Update 2) , LANG=zh_CN.GB18030, jdk 1.4.2_02  为例,说一下过程

(自己要按照自己的情况变化,不要照搬,例如我按照下面摘抄的就不行)

1.发现存在中文字体 /usr/share/fonts/zh_CN/TrueType

2.jre的lib目录下有 font.properties.zh_CN.Redhat8.0 ,但是我的redhat不是8.0 ,改成Redhat应该通用,于是复制一份到 font.properties.zh_CN.Redhat ,看看内容,发现里面已经设置了中文字体,最后一行也指明了中文字体的路径,于是 不用修改任何东西了

3.重新启动程序/或者webserver ,ok 显示成功了

 

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

下面的内容从各处摘抄而来.

1. Mandrake Linux 8.2 、JDK 1.4.1  ( 【作者:家居猫】 )

===============================================

   很多朋友在 Linux 下使用 Java 开发应用程序时发现中文显示不正常,在窗口应用中的中文显示为一串方块。这主要是由于字体设置不正确。JDK 自带的配置文件中,它所指定的中文字体不存在而造成了显示不正确。本文以 Mandrake Linux 8.2 、JDK 1.4.1 为例,简单的介绍了在 Linux 下 Java 中文环境的设置方法。其它 Linux 系统或 JDK 版本可参照本文作相应调整。

    首先,检查你的 /usr/share/fonts/ttf/gb 目录下是否装有中文字体 gbsn00lp.ttf 。如果没有,也可以用 Windows 字体目录下的 song.ttf 来代替。将字体文件拷贝到 Java 安装目录下的 jre/lib/fonts 下。

    第二,修改 Java 安装目录下的 jre/lib/fonts/fonts.dir 文件,将首行的 72 改为 73,然后添加下列内容:

        gbsn00lp.ttf -Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0

        注意:如果你用的是 song.ttf ,则应该将头部的 gbsn00lp.ttf 改为 song.ttf 。

    第三,在 Java 安装目录下的 jre/lib 目录中,将字体配置文件 font.properties.zh.Turbo 复制为 font.properties.zh 。然后修改 font.properties.zh 。将文件中所有的:

        -tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0 替换为:
        -Arphic Technology Co.-AR PL SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0

    第四,用 JDK 自带的演示程序 SwingSet2 测试,如果看到中文菜单则说明设置成功。

===============================================

2. Java , Installanywhere 在 Redhat 上的中文问题解决方法     jacklondon [原作]

标准 jre/jdk 中只带了 redhat 6 的 font.properties, 我在 redhat 7.3 和 redhat 8.0 上都不能用。我们需要建一个 font.properties.zh.Redhat 放在 redhat 的 jre/lib 目录下。打开 /usr/lib/X11/fonts/ttf-zh 或者 /usr/share/fonts/zh_CN/TrueType 下面的 font.dir, 将其中的一个中文字体名复制下来,比如 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1,按照 java 的字体规则改为 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1,将 font.properties.zh 中的内容复制到 font.properties.zh.Redhat 中。

我选用字体 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1 是因为在 redhat 7.3 和 redhat 8.0 上都能用。

因为 jre/jdk 找不到 Redhat 的 true type 字体,在文件 font.properties.zh.Redhat 最后加入

appendedfontpath=/usr/lib/X11/fonts/ttf-zh
appendedfontpath=/usr/share/fonts/zh_CN/TrueType

将字体名全部替换成 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

java中文乱码解决之道(九)—–总结

乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了。LZ之所以写这个系列博客就是因为遇到...
  • chenssy
  • chenssy
  • 2015年01月30日 10:47
  • 10615

关于mysql中无法显示中文的完美解决方案

当用客户端或用其他方式连接数据键入中文数据后,在client中的显示为乱码,当然这是字符集设置出现了问题。我先后尝试了很多办法,但依然还是无法在client中显示中文,我尝试在my.ini中修改一下数...
  • u013616976
  • u013616976
  • 2014年03月02日 11:29
  • 2805

java pdf写入中文时不显示,如何解决。

java中生成pdf文件需要用到java文件:iText 5.0.6.jar文件 只下载iText5.0.6.jar文件是不能写入中文到pdf文件,同时需要iTextAsian.jar 但是我们在使用...
  • nly19900820
  • nly19900820
  • 2015年12月07日 11:26
  • 4529

QT5中文显示出现乱码

Qt中的中文显示,经常会出现乱码。这次自己学习QT,遇到的第一个问题就是中文乱码。看了一些博客,五花八门,不过好在还是得到了解决! 网上搜索一下,找到的都是这种: #include i...
  • u013468168
  • u013468168
  • 2016年03月13日 17:06
  • 3975

Pandas matplotlib 无法显示中文

Pandas 无法显示中文问题 解决方案Pandas在绘图时,会显示中文为方块,主要原因有二: matplotlib 字体问题 seaborn 字体问题 只需要在文件开始动态设置字体配置就可以了,但是...
  • FontThrone
  • FontThrone
  • 2017年07月13日 00:40
  • 20729

关于IP的一些问题

大家都用IP,但是对于IP的认识,我也是最近才有所了解,发现网络世界很值得研究一下,这是我的一点收获,希望与大家分享。       所谓IP地址就是给每个连接在Internet上的主机分配的一个32...
  • wangdan199112
  • wangdan199112
  • 2013年12月26日 08:09
  • 1454

Ubuntu下解决LaTeX不显示中文的问题

前言  最近在看LaTex的内容,遇到的第一个问题就是输入中文不显示。为了解决这个问题,查了资料才知道是没有使用中文处理的宏包CJK,导入包之后就可以正常的显示了。问题代码\documentclass...
  • ProgramChangesWorld
  • ProgramChangesWorld
  • 2015年12月13日 11:23
  • 2190

Linux中文显示乱码?如何设置centos显示中文

怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码。出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导...
  • frank_good
  • frank_good
  • 2016年03月30日 13:30
  • 2101

Matplotlib输出中文显示问题

声明:这是对别人经验的总结问题描述matplotlib绘制图像的时候显示中文时候,中文会变成小方格子。其实骂他plotlib是支持中文编码的,造成这个现象的原因是,matplotlib库的配置信息里面...
  • u010758410
  • u010758410
  • 2017年05月12日 15:59
  • 3539

opengl学习笔记(二)---中文显示

此方法中用到了glut,freeglut, freetype等库 1.显示英文字符 Opengl 显示英文字符相对做的处理要少一点,可以用glut封装的函数在屏幕上显示英文字符; //...
  • tomtc123
  • tomtc123
  • 2013年04月21日 12:40
  • 3334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下Java程序中中文显示的一些问题的总结
举报原因:
原因补充:

(最多只允许输入30个字)