最近使用到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" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Java图书销量统计</title>
</head>
<body>
<%
// 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;
%>
<img src="<%=graphURL%>" border="1">
</body>
</html>

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

<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>

这样就可以显示图片了,但是有乱码,如何解决?

比如要画出的图含有宋体、黑体、微软雅黑的话,可以下载下面的文件:

然后执行下面的操作即可:

1.上传到服务器的JAVA_HOME/jre/lib/fonts文件夹中,然后新建一个JAVA_HOME/jre/lib/fonts.bak文件夹;

2.进入JAVA_HOME/jre/lib/fonts.bak文件夹中,执行mkfontscale命令,使用ls命令可以看到产生的fonts.scale文件;

3. 使用cat fonts.scale看出上面三个文件的链接,如下图:


4.进入JAVA_HOME/jre/lib/fonts文件夹,vi fonts.dir编辑fonts.dir文件,在末尾添加上面图中红色框的三行,同时修改第一行中的数字,在原来的基础上面加3(redhat 6.3 jdk1.6.0_10 64-bit 默认这个数字是48,加上3是51);

5.重启tomcat,即可看到图上面的中文字体正确显示,如下图:

分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990

redhat6.3 jfreechar中文乱码解决途径的更多相关文章

  1. centos 中文乱码解决途径

    在使用CentOS系统时,安装的时候可能你会遇到英文的CentOS系统,在这中情况下安装CentOS系统时是默认安装(即英文).安装完毕后,出现的各种中文乱码.那么,我们如何解决这种问题呢. 一.Ce ...

  2. java中文乱码解决之道(九)-----总结

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

  3. Javaee中文乱码解决方法

    分类: javaee2015-07-09 16:35 29人阅读 评论(0) 收藏 编辑 删除 post 中文乱码解决方式 接受数据的时候设置 request.setCharacterEncoding ...

  4. java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**

    在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...

  5. java中文乱码解决之道(七)-----JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  6. Arch Linux中文乱码解决

    Arch Linux中文乱码解决 1.安装中文字体 pacman -S wqy-zenhei ttf-fireflysung (flash乱码)   ---乱码的原因就是缺少中文字体的支持,下载文泉驿 ...

  7. [Linux] - CentOS中文乱码解决办法

    CentOS 7 终端中文乱码解决办法: 1.使用vim编辑locale.config文件: vim /etc/locale.conf 2.将LANG="en_US.UTF-8"修 ...

  8. ubuntu文本模式/终端中文乱码解决

    ubuntu文本模式/终端中文乱码解决 1.Alt+Ctrl+F1 进入第一个终端tty1,发现中文乱码. 2.安装zhcon. sudo apt-get install zhcon3 输入下面命令, ...

  9. JS读写cookie以及中文乱码解决

    本文地址:http://www.cnblogs.com/PiaoMiaoGongZi/p/4092489.html 转载请注明. Js获取所有的cookie信息: var cookiename = d ...

随机推荐

  1. 将 jsp 页面的值 传到struts2 action中(不是表单中的值)

    JSP: 页面: <%@ page language="java"  pageEncoding="GBK"%> <%@taglib prefi ...

  2. 不老的新丁 Python何以让人着迷

    Python是一门美丽的语言.它简单易学,跨平台,而且运转良好.达成了许多Java一直求索的技术目标.一言以蔽之就是:其他的语言是与时代同 步,而Python则是未雨绸缪,而且计划得颇为出色.当然,这 ...

  3. 同步内核缓冲区 sync、fsync和fdatasync函数

    同步内核缓冲区 1.缓冲区简单介绍 人生三大错觉之中的一个:在调用函数write()时,我们觉得该函数一旦返回,数据便已经写到了文件里.可是这样的概念仅仅是宏观上的.实际上.操作系统实现某些文件I/O ...

  4. Android内存之VSS/RSS/PSS/USS

    Terms VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存) PSS - P ...

  5. C-KMP

    一.BF算法 --传统算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符:若不相等,则比较S的 ...

  6. silentScroll() 滚屏

    jQuery.mobile.silentScroll( yPos ) 滚动到一个特定的Y坐标位置,没有触发涡旋的事件监听器 yPos:Y坐标.类型:数字.默认值: //滚屏到y 100px处 $.mo ...

  7. 基于MapReduce的HBase开发

    在伪分布式模式和全分布式模式下 HBase 是架构在 HDFS 上的,因此完全可以将MapReduce 编程框架和 HBase 结合起来使用.也就是说,将 HBase 作为底层“存储结构”, MapR ...

  8. Swift - 表格图片加载优化(拖动表格时不加载,停止时只加载当前页图片)

    列表的单元格中包含有图片在开发中很常见.通常我们可以直接在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIn ...

  9. stm32智能小车之路之小车启动

           首先.安装完小车后最激动的还是想让他跑动,那么就開始吧.写个简单的程序測试下电机是否正常.打开keil软件新建一个project,详细简历keilproject不会的请百度.或者call ...

  10. vi命令提示:Terminal too wide

    putty: 在我的电脑上,缺省的设置是这样的: localhost:~ eygle$ stty -aspeed 9600 baud; 51 rows; 171 columns; 在远程编辑文件时,减 ...