『壹』 jfreechart 出現亂碼問題
最主要的是設置font
jfreechart中文亂碼問題解決方案(轉)
柱狀圖(CategoryPlot):
CategoryPlot plot=chart.getCategoryPlot();//獲取圖表區域對象
CategoryAxis domainAxis=plot.getDomainAxis();
//水平底部列表
domainAxis.setLabelFont(new Font("黑體",Font.BOLD,14));
//水平底部標題
domainAxis.setTickLabelFont(new Font("宋體",Font.BOLD,12));
//垂直標題
ValueAxis rangeAxis=plot.getRangeAxis();//獲取柱狀
rangeAxis.setLabelFont(new Font("黑體",Font.BOLD,15));
chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
餅圖(PiePlot):
JFreeChart chart = ChartFactory.createPieChart3D("IT行業職業分布圖", dataset, true, false, false);
chart.getTitle().setFont(new Font("黑體",Font.BOLD,20));//設置標題字體
PiePlot piePlot= (PiePlot) chart.getPlot();//獲取圖表區域對象
piePlot.setLabelFont(new Font("黑體",Font.BOLD,10));
chart.getLegend().setItemFont(new Font("黑體",Font.BOLD,10));
時序圖(TimeSeries)
XYPlot plot = (XYPlot) chart.getPlot();
//縱軸字體
plot.getRangeAxis().setLabelFont(new Font("宋體", Font.BOLD, 15));
//橫軸框里的標題字體
chart.getLegend().setItemFont(new Font("宋體", Font.ITALIC, 15));
//橫軸列表字體
plot.getDomainAxis().setTickLabelFont(new Font("新宋體", 1, 15));
//橫軸小標題字體
plot.getDomainAxis().setLabelFont(new Font("新宋體", 1, 12));
折線圖
chart.getTitle().setFont(new Font("宋體", Font.BOLD, 15));
chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
CategoryAxis domainAxis = plot.getDomainAxis();
/*------設置X軸坐標上的文字-----------*/
domainAxis.setTickLabelFont(new Font("黑體", Font.PLAIN, 11));
/*------設置X軸的標題文字------------*/
domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));
NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
/*------設置Y軸坐標上的文字-----------*/
numberaxis.setTickLabelFont(new Font("黑體", Font.PLAIN, 12));
/*------設置Y軸的標題文字------------*/
numberaxis.setLabelFont(new Font("黑體", Font.PLAIN, 12))
『貳』 關於jfreechart的中文亂碼問題
這個問題我前幾天遇到過,已經解決。
隨便找一個項目,把下面的**.jsp放在根目錄下,然後啟動伺服器,打開**.jsp
注釋部分是生成一個窗口。
問題原因在於要設置字體
我的jar包也是jfreechart1.0.13。亂碼問題不是jar包問題。
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.Locale,org.jfree.chart.*,org.jfree.chart.title.TextTitle,org.jfree.chart.ChartFrame,org.jfree.chart.plot.PiePlot, org.jfree.data.general.DefaultPieDataset, org.jfree.chart.servlet.ServletUtilities, java.awt.*"%>
<% //設置數據集
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("初中高級程序員", 0.55);
dataset.setValue("項目經理", 0.1);
dataset.setValue("系統分析師", 0.1);
dataset.setValue("軟體架構師", 0.1);
dataset.setValue("其他", 0.2); //通過工廠類生成JFreeChart對象
JFreeChart chart = ChartFactory.createPieChart3D("IT行業職業分布圖", dataset, true, true,false);
PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setLabelFont(new Font("宋體", 0, 12));
//沒有數據的時候顯示的內容
pieplot.setNoDataMessage("無數據顯示");
pieplot.setCircular(false);
pieplot.setLabelGap(0.02D);
TextTitle txtTitle = null;
txtTitle = chart.getTitle();
Font font = new Font("宋體", Font.BOLD, 16);
txtTitle.setFont(font);
chart.getLegend().setItemFont(font);
// ChartFrame cf=new ChartFrame("杭州順源管理圖",chart);
// cf.pack();
// cf.setFont(font);
// cf.setVisible(true);
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
『叄』 JFreeChart 中文亂碼問題
import java.awt.Font;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
public class Test3 {
public Test3() {
}
public static void main(String[] args) {
DefaultPieDataset dpd = new DefaultPieDataset();
dpd.setValue("管理人員", 25);
dpd.setValue("市場人員", 25);
dpd.setValue("開發人員", 45);
dpd.setValue("其他人員", 5);
// Create JFreeChart object
// 參數可以查看源碼
JFreeChart chart = ChartFactory.createPieChart("公司組織架構圖", dpd, true,
true, false);
Font font = new Font("SimSun", 10, 20);
TextTitle txtTitle = null;
txtTitle = chart.getTitle();
txtTitle.setFont(font);
PiePlot pieplot = (PiePlot)chart.getPlot();
pieplot.setLabelFont(font);
chart.getLegend().setItemFont(font);
ChartFrame pieFrame = new ChartFrame("公司組織架構圖", chart);
pieFrame.pack();
pieFrame.setFont(font);
pieFrame.setVisible(true);
}
}
『肆』 jfreechart 中文亂碼!請高手解答
1.在你的代碼裡面加入日誌,將取到的信息列印出來,看看是不是亂碼。
2.如果上面沒出現亂碼,那就可能是設置的response的charset和頁面content-type的不一致,此外,還要檢查下頁面文件的編碼。
3.你用的什麼編碼?頁面的和資料庫的。
你什麼編碼設置都沒說明,很難想像問題出在哪的。
『伍』 JfreeChart中文亂碼如何解決
兩種方案根據需要選擇:
第一:
可以設置字體來修正亂碼,比如要修改標題
Java codechart.setTitle(new TextTitle("修正字體", new Font("黑體", Font.BOLD, 20)));
至於要縮放,據我所知在網頁上是不支持的,要改變橫軸方向的話,需要取得橫軸對象後,調用該對象的
Java codesetCategoryLabelPositions(CategoryLabelPositions.UP_45)
方法來設定,這里是產生旋轉45度角,不知道說清楚沒,試試吧!
第二:
Font font = new Font("SimSun",10,20);
TextTitle tt = chart.getTitle();
tt.setFont(font);
PiePlot pieplot = (PiePlot)chart.getPlot();
pieplot.setLabelFont(font);
chart.getLegend().setItemFont(font);
設置字體就可以啊!
『陸』 Jfreechart中文亂碼
你試一下下面的方案看有效不?jfreechart對中文的支持部是很好,我開始做的時候也有亂碼,下面的方案是在java上運行可以的。。。
jfreechart中文亂碼問題解決方案(轉)
柱狀圖(CategoryPlot):
CategoryPlot plot=chart.getCategoryPlot();//獲取圖表區域對象
CategoryAxis domainAxis=plot.getDomainAxis();
//水平底部列表
domainAxis.setLabelFont(new Font("黑體",Font.BOLD,14));
//水平底部標題
domainAxis.setTickLabelFont(new Font("宋體",Font.BOLD,12));
//垂直標題
ValueAxis rangeAxis=plot.getRangeAxis();//獲取柱狀
rangeAxis.setLabelFont(new Font("黑體",Font.BOLD,15));
chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
餅圖(PiePlot):
JFreeChart chart = ChartFactory.createPieChart3D("IT行業職業分布圖", dataset, true, false, false);
chart.getTitle().setFont(new Font("黑體",Font.BOLD,20));//設置標題字體
PiePlot piePlot= (PiePlot) chart.getPlot();//獲取圖表區域對象
piePlot.setLabelFont(new Font("黑體",Font.BOLD,10));
chart.getLegend().setItemFont(new Font("黑體",Font.BOLD,10));
時序圖(TimeSeries)
XYPlot plot = (XYPlot) chart.getPlot();
//縱軸字體
plot.getRangeAxis().setLabelFont(new Font("宋體", Font.BOLD, 15));
//橫軸框里的標題字體
chart.getLegend().setItemFont(new Font("宋體", Font.ITALIC, 15));
//橫軸列表字體
plot.getDomainAxis().setTickLabelFont(new Font("新宋體", 1, 15));
//橫軸小標題字體
plot.getDomainAxis().setLabelFont(new Font("新宋體", 1, 12));
折線圖
chart.getTitle().setFont(new Font("宋體", Font.BOLD, 15));
chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
CategoryAxis domainAxis = plot.getDomainAxis();
/*------設置X軸坐標上的文字-----------*/
domainAxis.setTickLabelFont(new Font("黑體", Font.PLAIN, 11));
/*------設置X軸的標題文字------------*/
domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));
NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
/*------設置Y軸坐標上的文字-----------*/
numberaxis.setTickLabelFont(new Font("黑體", Font.PLAIN, 12));
/*------設置Y軸的標題文字------------*/
numberaxis.setLabelFont(new Font("黑體", Font.PLAIN, 12))
『柒』 JFREECHART 生成的圖片中的漢字是亂碼
因為伺服器的默認字體和你本機的不同。
『捌』 jfreechart,windows下中文顯示正常,linux下亂碼.在線等。。。急急急!!
初入linux的程序員們,經常會受到亂碼的問候。可謂「始亂終棄」。因為亂碼,並且最終放棄了linux的不在少數。好吧,言歸正傳,先看看各類亂碼是怎麼形成的。
中文字元亂碼
這種情況一般是安裝了中文控制端,但沒有啟用中文應用造成的。只需要啟動相應軟體即可,如zhcon。或者是啟用了相應軟體,但字元集不對,需設置相應字元集,例如export LANG=zh_CN.UTF-8
ORACLE安裝界面亂碼
雖說ORACLE支持多國語言,會根據環境變數自動選擇字元集,但中文安裝好像還有問題,不過10.2以後的版本好像沒有該問題了,具體可以執行命令export LANG=en_US來設置為英文字元集環境
英文字元亂碼
一般該字元亂碼多出現在cat了二進制的文件時,因為二進制文件中多有控制碼,會導致終端界面亂碼,通常解決方法是用reset終端復位命令解決問題
其他偽終端亂碼
有時是通過SSH進入遠程LINUX伺服器時,cat一個core文件,並且用reset命令都不能成功,怎麼辦?很簡單,看以下試驗,首先cat一個python的編譯文件
oracle@linux-suse:~> cat fibo.pyc
m?
{?鯡c@sd
Zd
ZdS(cCs:d\}}x'||jo|G|||}}qWdS(Nii(ii(tatbtn(RRR((tfibo.pytfibs
cCsIg}d\}}x0||jo"|i||||}}qW|S(Nii(ii(tresultRRRtappend(RRRR((Rtfib2 s
N(RR(RR((Rt?s oracle@linux-suse:~> VT102VT102
\-bash: VT102VT102: command not found
oracle@linux-suse:~>
在SSH終端上看到是的亂碼,提示符都是亂的,可以用以下命令恢復
oracle@linux-suse:~> tput sgr0
亂碼問題產生的原因是SSH的問題,因為在其他終端下,cat用樣一個文件,不會產生亂碼,於是試驗亂碼產生的原因
oracle@linux-suse:~> ^N
只要用ctrl+v,ctrl+n就使用屏幕亂碼,當然恢復後再試驗
oracle@linux-suse:~> echo -e '\xe'
屏幕再次亂碼,好,再恢復
oracle@linux-suse:~> echo -e '\xf'
以上是需要盲打的,因為屏上看到的是亂碼,最終問題產生的原因是十六進制字元E產生的,解決也很簡單,十六進制字元F即可。
我在藍色理想里看到的 希望幫到你
『玖』 為什麼jfreechart 會特殊字元亂碼呢
因為一般JS編碼是UTF-8的,所以在JS與後台或JS交互的時候需要
new String(a.getByte(),"gbk");類似這樣把參數轉碼