redhat6.3 jfreechar中文乱码解决途径
最近使用到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中文乱码解决途径的更多相关文章
- centos 中文乱码解决途径
在使用CentOS系统时,安装的时候可能你会遇到英文的CentOS系统,在这中情况下安装CentOS系统时是默认安装(即英文).安装完毕后,出现的各种中文乱码.那么,我们如何解决这种问题呢. 一.Ce ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- Javaee中文乱码解决方法
分类: javaee2015-07-09 16:35 29人阅读 评论(0) 收藏 编辑 删除 post 中文乱码解决方式 接受数据的时候设置 request.setCharacterEncoding ...
- java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**
在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...
- java中文乱码解决之道(七)-----JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
- Arch Linux中文乱码解决
Arch Linux中文乱码解决 1.安装中文字体 pacman -S wqy-zenhei ttf-fireflysung (flash乱码) ---乱码的原因就是缺少中文字体的支持,下载文泉驿 ...
- [Linux] - CentOS中文乱码解决办法
CentOS 7 终端中文乱码解决办法: 1.使用vim编辑locale.config文件: vim /etc/locale.conf 2.将LANG="en_US.UTF-8"修 ...
- ubuntu文本模式/终端中文乱码解决
ubuntu文本模式/终端中文乱码解决 1.Alt+Ctrl+F1 进入第一个终端tty1,发现中文乱码. 2.安装zhcon. sudo apt-get install zhcon3 输入下面命令, ...
- JS读写cookie以及中文乱码解决
本文地址:http://www.cnblogs.com/PiaoMiaoGongZi/p/4092489.html 转载请注明. Js获取所有的cookie信息: var cookiename = d ...
随机推荐
- java基础之注解
包含成员变量及方法的注解称之为元数据, 不包含任何成员的注解称之为标记. 用@interface定义注解, 使用类似于接口方法的方式来定义注解的属性,其中返回值成为属性的类型,方法名为属性的名称. p ...
- perl 使用use utf8
jrhapt12:/home/tomcat> cat a1.pl use Encode; $phone='18072722237'; open (LOG1 ,"<",' ...
- JavaEE Tutorials (3) - 企业bean
3.1什么是企业bean383.1.1企业bean的好处393.1.2何时使用企业bean393.1.3企业bean类型393.2什么是会话bean393.2.1会话bean类型403.2.2何时使用 ...
- Pencil OJ 01 开发的准备
操作系统 ubuntu-12.04.5-desktop-amd64.iso 基本应用 Node 0.12.7 MongoDB 3.0.4 Robomongo 0.8.4 Atom 参考资料 OJ hu ...
- OGR SQL
The OGRDataSource supports executing commands against a datasource via the OGRDataSource::ExecuteSQL ...
- [转]svn提交自动同步到web服务器
参考博文:http://my.oschina.net/wddqing/blog/201567 同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post ...
- U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法
1.查询磁盘 cd /dev ls 2.查询结果 sda 是我的硬盘对应的文件名(我机子只有一块硬盘),所以sda4就是U盘对应的文件名了,可以看到是sda4.至此我们重启一下,回到第一个图片所示的界 ...
- 重新签名apk文件(手工用命令行)
re-sign.jar中后自动去除签名这个方法,经试验不可用! 1.去除准备重新签名SinaVoice.apk软件本身的签名 将apk文件后缀改为.zip,然后从winrar中删除META-INF文件 ...
- Sed常用实例总结
[Sed简介] sed是一个文件处理工具,本身是一个管道命令,主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等.sed以行为单位,一次处理一行内容,处理时,把当前处理的行存储在临时 ...
- Charles_N:HTTP请求响应监听工具
Charles:HTTP请求响应监听工具使用说明.doc 1. 介绍 Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器.它允许一个开发者查看所有连接互联网的HTTP通信 ...