linux命令行不显示中文乱码,JFreechart在linux下不显示及中文乱码问题详解

fff6c98081bf8904098fb5e1bd59ff4b.gif

一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉,

原因是jfreechart的在linux系统中需要访问java awt库提供的图形功能,而linux下的绝大多数版本的java awt类库都需要x server提供的一些功能。而基本上作服务器的系统都没有启动x server(甚至根本没安装)。

报错如下:X connection to localhost:11.0 broken (explicit kill or server shutdown).

我解决方法如下:

vi /etc/profile

在最后加上 :export CATALINA_OPTS='-Djava.awt.headless=true'

例如:

Java代码mysqlhome=/usr/local/mysql

PATH=$PATH:$mysqlhome/bin:$PATH

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

export CATALINA_OPTS='-Djava.awt.headless=true'

mysqlhome=/usr/local/mysql

PATH=$PATH:$mysqlhome/bin:$PATH

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

export CATALINA_OPTS='-Djava.awt.headless=true'

二.中文乱码问题

jfreechart报表在linux下中文乱码问题,因为jdk缺少中文字库造成的,解决方法就是加上字库 ,以下方法针对1.6可以生效1.5未测试。

1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf  simsun.ttf(这个是windows下C:/WINDOWS/simsun.ttc改名而来的)

2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,重新生成fonts.dir文件

3.确认/usr/share/fonts/zh_CN/TrueType目录存在,如果不存在则mkdir创建

4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf  simsun.ttf

5.在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties

6.重新启动tomcat,大功告成!

注:有的系统可能不需要simsun.ttf字体

如何支持带中文的图像

问题描述:

用户数量图、资金占比图等使用jfreechart开发的图像,中文显示为乱码

问题原因:

Linux上的jdk6(jre)本身不支持中文。

问题解决:

1)把XP下的字体C:\WINDOWS\FONTS\simsun.ttc(也就是宋体,大小为10M),把他重命名为 simsun.ttf。

2)拷贝simsun.ttf 字体到 /usr/share/fonts/zh_CN/TrueType/ 下

3)在linux命令行下执行:

fc-cache /usr/share/fonts/zh_CN/TrueType/ 字体安装完成了,就可以使用这个字体

程序中解决方案:font =new Font("宋体",Font.PLAIN,12);

chart.setTitle(new TextTitle("",font.deriveFont(14f)));

CategoryPlot plot = (CategoryPlot)chart.getPlot();

CategoryAxis categoryAxis = plot.getDomainAxis();

categoryAxis.setTickLabelFont(font.deriveFont(12f));

categoryAxis.setLabelFont(font.deriveFont(12f));

//categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

//设置角度

NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();

numberAxis.setLabelFont(font.deriveFont(12f));

numberAxis.setTickLabelFont(font.deriveFont(12f));

//plot.set

chart.getTitle().setFont(font.deriveFont(14f)); // 设置标题字体

//chart.getLegend().setItemFont(font);// 设置图例类别字体

LegendTitle legendTitle = chart.getLegend(0);

if (legendTitle != null){

legendTitle.setItemFont(font.deriveFont(12f));

}

fff6c98081bf8904098fb5e1bd59ff4b.gif

转载请注明来源网站:www.itxm.cn谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值