redhat6.3 jfreechar中文乱码解决途径

2014-11-24 09:24:20 · 作者: · 浏览: 1
最近使用到jfreechar的项目,在转移到linux上面时出现中文乱码(中文被显示为框框),网上查了一些资料,结合自身系统的特性,总结了一种安装字体的方式。在说字体安装之前首先上个测试的代码吧:web工程,用于画图的类(代码基本来自网上):
package fansy.jfreechar.demo;  
  
import java.awt.Font;  
  
import org.jfree.chart.ChartFactory;  
import org.jfree.chart.JFreeChart;  
import org.jfree.chart.StandardChartTheme;  
import org.jfree.chart.plot.PlotOrientation;  
import org.jfree.data.category.CategoryDataset;  
import org.jfree.data.category.DefaultCategoryDataset;  
  
public class JfreecharDemo {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
    //  ChartUtilities t=new ChartUtilities();  
    //  createChart();  
    }  
    public static JFreeChart createChart() {    
        StandardChartTheme standardChartTheme =  
                new StandardChartTheme("CN");   //创建主题样式    
       // standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20));    //设置标题字体    
        standardChartTheme.setExtraLargeFont(new Font("微软雅黑",Font.BOLD,20));  
        standardChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 15));  //设置图例的字体    
        standardChartTheme.setLargeFont(new Font("仿宋", Font.PLAIN, 15));        //设置轴向的字体    
       // ChartFactory.setChartTheme(standardChartTheme); //设置主题样式    
        ChartFactory.setChartTheme(standardChartTheme);  
        //通过ChartFactory创建JFreeChart    
        JFreeChart chart = ChartFactory.createBarChart3D(    
                "JAVA图书销量统计",           //图表标题    
                "JAVA图书",                   //横轴标题    
                "销量(本)",                    //纵轴标题    
                createDataSet(),                    //数据集合     
                PlotOrientation.VERTICAL,       //图表方向    
                false,                      //是否显示图例标识    
                false,                      //是否显示tooltips    
                false);                     //是否支持超链接    
         
        return chart;    
    }    
    public static CategoryDataset createDataSet() {    
        //实例化DefaultCategoryDataset对象    
        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();    
        //向数据集合中添加数据    
        dataSet.addValue(500, "JAVA图书", "J2SE类");    
        dataSet.addValue(100, "JAVA图书", "J2ME类");    
        dataSet.addValue(900, "JAVA图书", "J2EE类");    
        return dataSet;    
    }    
}  

测试显示图片使用的 jsp
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>    
<%@ page import="org.jfree.chart.servlet.ServletUtilities,    
                fansy.jfreechar.demo.*"%>  
<%@ page import="java.io.*" %>  
<%@ page import="org.jfree.chart.ChartUtilities" %>    
    
    
      
    <a href="http://www.2cto.com/kf/ware/Java/" target="_blank" class="keylink">Java</a>图书销量统计    
      
      
    <%    
   //   PrintWriter w = new PrintWriter(out);//输出MAP信息  
            String fileName = ServletUtilities.saveChartAsJPEG(JfreecharDemo.createChart(),450,300,session);   
         //   ChartUtilities.writeImageMap(w,"map0",false);  
            String graphURL = request.getContextPath()  
+ "/DisplayChart filename=" + fileName;    
    %>    
        
     
html>  

刚开始的时候不知道怎么用的,只知道运行,然后看结果。结果就是没有图出来,原来图片都保存在了tomcat的temp目录下面了,所以就上网找改变jfreechar默认图片存放路径的代码,结果找了之后还是显示不出来。后来配置了web.xml并且使用原来的(即上面的代码,而非该默认保存路径的代码)就ok了,web.xml配置如下:
  
        DisplayChart  
        org.jfree.chart.servlet.DisplayChart  
      
      
        DisplayChart  
        /DisplayChart