JFreeChart在linux下中文乱码

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

JFreeChart在linux下生成图表时中文乱码,原因是JRE没有找到对应中文字库,解决方法如下:
解决方法1:
1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf
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
5. 在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
6. 重启resin服务器OK.

解决方法2:
1.将zysong.ttf复制到Java安装目录/jre/lib/fonts
2.修改Java安装目录 %JavaHome%/jre/lib/fonts下的font.ttf文件
  修改首行的数字(数字+1)
  在最后一行添加zysong.ttf -misc-zysong--medium-r-normal--0-0-0-0-c-0-GB18030
3. 将%JavaHome%/jre/lib/fontconfig.RedHat.3.properties.src文件,更名为fontconfig.properties;
4. 建立/usr/share/fonts/zh_CN/TrueType文件夹,拷贝zysong.ttf至该文件夹下.
5. 重启resin服务器OK.

 

 

使用这个小程序来测试某个环境下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

 

 

附件提供:zysong.ttf文件

你可能感兴趣的:(C++,c,linux,redhat,jfreechart)