`
ferreousbox
  • 浏览: 287483 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jfreechart在linux下的中文乱码

    博客分类:
  • java
阅读更多

     这两天因为要统计报表,就用到了jfreechart组件,因为是在windows下编程,所以一直都比较正常,可没想到一放到linux下就出现了乱码,所有的中文都是显示小方块,郁闷的很,然后google了下,网络上倒是有不少的解决方案,可一一试过以后发现都不行,仍旧是乱码,或许是因为环境不同导致配置无法生效,也或许是我配置有失误,总之试了很多都无法解决乱码的问题。再者网络上介绍的都是更改系统的字体,麻烦的很,而且有误操作的可能性,而且文章都比较旧了,视乎跟不上时代的节奏了。本着自我研究的精神,google了不少的方案后大致明白应该是JRE找不到指定的字体而导致的乱码,所以当然是从字体入手,首先是看看jfreechart默认是用什么字体的,查看如下代码:

 

System.out.println(jfreechart.getTitle().getFont().getFamily()); 

 

结果输出是:

 

SansSerif

 

很陌生的字体,既然这样,我们就可以设置自己想要的字体,比如设置柱状图的标题字体,可以如下代码:

 

 

jfreechart.getTitle().setFont(new Font("宋体", Font.BOLD, 22));

 

其他的诸如X,Y轴的名称、刻度和类别等文字的字体也可以一并进行设置,还是以柱状图为例子,

 

Font font = new Font("宋体", Font.BOLD, 22);
jfreechart.getTitle().setFont(font); // 标题

font = new Font("宋体", Font.PLAIN, 14);
jfreechart.getLegend().setItemFont(font); // 列类型的文字字体
		
font = new Font("宋体", Font.PLAIN, 16);
categoryaxis.setLabelFont(font); // x轴名称的字体
categoryplot.getRangeAxis().setLabelFont(font); // y轴名称的字体

CategoryPlot categoryplot = jfreechart.getCategoryPlot();
CategoryAxis categoryaxis = categoryplot.getDomainAxis();

font = new Font("宋体", Font.PLAIN, 12);
categoryaxis.setTickLabelFont(font); // x轴上的刻度名称字体
categoryplot.getRangeAxis().setTickLabelFont(font); // y轴上的刻度名称字体
		
font = new Font("宋体", Font.PLAIN, 18);
categoryplot.setNoDataMessage(emptyMsg);
categoryplot.setNoDataMessageFont(font); // 没有数据时的提示

 

    这样设置完毕后,我再在linux下运行就没有乱码问题了。我的环境是:Redhat4,Jdk6,jfreechart-1.0.0(这个版本中还没有Theme的概念)。

 

    我的解决方法并没有修改linux或JRE的字体,当然前提应该还是linux下的JRE支持中文字体了,我们可以使用这个小程序来测试某个环境下JRE是否支持中文,如下:

 

package test;

public class ImageTester {
    public static void generate(String fileName) throws Exception {
        BufferedImage image = new BufferedImage(300, 200, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        String fontType = "宋体";
        g.setFont(new Font(fontType , Font.BOLD, 22));
        g.drawString("你好我好", 30, 30);
        g.drawString("\u5b8b\u4f53", 30, 80);
        ImageIO.write(image, "JPEG", new FileOutputStream(new File(fileName)));
    }
	
    /**
    * @param args
    */
    public static void main(String[] args) throws Exception {
        generate(args[0]);
    }

}

linux下运行时这样运行:
java test.ImageTetser /home/test.png

 

 

    当然了,这个解决方案不代表可以解决所有的乱码问题,而且也无法得到验证,仅仅是我在处理乱码过程中的一点心得,希望对大家有点用处:-)

 

分享到:
评论

相关推荐

    JFreechart 在linux下不显示及中文乱码问题

    标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...

    jfreechart在LINUX下乱码问题的解决

    总结来说,解决JFreeChart在Linux下的中文乱码问题,主要涉及调整JVM的字符集设置,正确使用编码,以及在JFreeChart的图表配置中使用支持中文的字体。具体实现细节和步骤需要参考相关的代码示例或博客文章进行操作。

    JFreeChart在linux下生成图表时中文乱码

    JFreeChart在linux下生成图表时中文乱码,原因是JRE没有找到对应中文字库,解决方法如下:

    Linux下的JFreeChart中文乱码口口解决

    在Linux环境下使用JFreeChart库绘制图表时,可能会遇到中文乱码的问题。JFreeChart是一个强大的Java库,它提供了一套完整的解决方案来创建各种图表,如饼图、柱状图、线图等。然而,由于编码问题,当图表中包含中文...

    jfreechart Linux服务器图片中文乱码解决方案(亲测,已解决多台服务器)

    然而,由于默认的字体设置可能不支持中文字符,因此在非Windows环境下,特别是Linux服务器上,可能会遇到中文乱码的问题。 解决这个问题的关键在于提供一个支持中文的字体库。以下是一种有效的方法: 1. 在Windows...

    jfreechart部署linux服务器生成图片乱码解决方案

    标题 "jfreechart部署在Linux服务器上生成图片乱码的解决方案" 涉及到的主要知识点是关于Java图形库JFreeChart在Linux环境中的使用,特别是解决中文字符乱码的问题。JFreeChart是一个广泛使用的开源Java库,它允许...

    解决jfreechart在linux下无法显示中文

    标题“解决jfreechart在Linux下无法显示中文”所涉及的知识点主要集中在Java图形库JFreeChart和在Linux操作系统中的字体配置。JFreeChart是一个强大的Java库,用于创建各种图表,如柱状图、饼图、线图等。在Windows...

    jfreechart linux乱码解决方案

    在Linux环境下,使用JFreeChart库进行图表生成时,可能会遇到中文乱码的问题。这是因为JFreeChart默认使用的是西方字符集,不支持中文显示。本文将深入探讨如何解决这一问题,确保在Linux系统中,JFreeChart能正确地...

    linux下JFreeChart生成的图片乱码,可以用这个字体

    在Linux环境下,使用Java的...总的来说,解决JFreeChart在Linux下的中文乱码问题需要结合系统环境、JFreeChart的API使用以及适当的编码设置。通过正确地配置和使用支持中文的字体,可以确保生成的图表文本清晰易读。

    Linux系统中文乱码解决完整方案

    在 Linux 系统中,中文文件在 ssh 终端中显示为乱码,这是由于 SSH 客户端和 Linux 服务器之间的字符集不同所导致的。解决这个问题,需要修改 Linux 系统的默认字符集,使其与 Windows 系统的一致。 本文档提供了两...

    Linux下JFreechart中文乱码的解决.docx

    Linux下JFreechart中文乱码的解决.docx

    zysong.ttf jfreechart 解决中文乱码 问题

    这是一款专为Linux设计的中文字体,包含了大量汉字,可以有效地解决JFreeChart在Linux环境下的中文乱码问题。将“zysong.ttf”字体文件添加到系统中,可以让JFreeChart在绘制图表时能够正确渲染中文字符。 在Java...

    JFreechart源码以及linux环境下中文乱码的解决

    通过以上分析,我们可以看到,理解和使用JFreeChart源码不仅可以解决在Linux环境下中文乱码的问题,还能帮助我们更好地控制和定制图表的显示效果。对于需要在Java项目中展示数据或者创建复杂图表的开发者来说,深入...

    linux 下 JFreeChart 乱码 JDK字符集

    在Linux环境下,使用JFreeChart库生成图表时可能会遇到中文乱码的问题,表现为显示为“口”这样的小方块。这通常与字符编码设置、JDK版本以及系统字体配置有关。下面将详细解释这个问题的原因及解决策略。 1. **...

    jfreehchar在LINUX下中文乱码的解决

    在Linux环境下,使用JFreeChart库进行数据可视化时,可能会遇到中文乱码的问题。这个问题主要源于JFreeChart在渲染图表时,对字符编码的处理不当,导致非ASCII字符(如中文)无法正确显示。以下是一份详细的解决方案...

    jfreechart乱码问题

    这个问题主要是由于jFreeChart默认使用的字体不支持中文字符,导致在图表中显示的中文无法正常识别,进而出现乱码现象。本文将详细介绍jFreeChart中解决中文乱码问题的方法。 #### 二、jFreeChart概述 jFreeChart...

    Linux下Jfreechart会出现方框框

    在Linux环境下使用JFreeChart库绘制图形时,有时可能会遇到一个特定的问题,即在图表上显示的文本出现方框框的现象。这个问题通常是由于字体缺失或不兼容导致的,特别是当JFreeChart尝试渲染某些特殊字符时,如果...

    jfreechart乱码(linux下)

    在Linux环境下,JFreeChart库可能会遇到乱码问题,这主要涉及到字符编码的处理。JFreeChart是一个强大的Java图表库,用于生成高质量的2D图形,如饼图、柱状图、线图等。然而,当在Linux系统上运行含有中文或其他非...

    JFreeChart 详细中文教程 案例 中文API 乱码解决方法

    JFreeChart-1.0.13原文件含jar包。 1、JFreeChart生成图片路径教程 2、JFreeChart使用教程(含下载安装,超详细) 3、JFreeChart使用详细教程 ...5、JFreeChart乱码解决方法 等等 包括许多优秀案例

    ireport jfreechart 圖表 欄位 linux 亂碼問題1

    这是因为 JFreeChart 在 Linux 系统下对中文的支持不够好,导致乱码的问题。 问题原因 JFreeChart 使用的字体默认是 Arial,而在 Linux 系统下,默认的字体不支持中文字符,这导致了图表标题和标签中的中文字符无法...

Global site tag (gtag.js) - Google Analytics