pChart 圖表中文顯示問題

來源:互聯網
上載者:User
項目需要,圖表顯示資料,個人能力有限,
 /* CAT:Bar Chart */ header("content-type:text/html; charset=utf-8"); /* pChart library inclusions */ include("class/pData.class.php"); include("class/pDraw.class.php"); include("class/pImage.class.php"); /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints(array(150,220,300,250,420,200,300,200,100),"test"); $MyData->setAxisName(0,"Hits"); $MyData->addPoints(array("1月","2月","3月","4月","5月","6月","7月","8月","9月"),"Months"); $MyData->setSerieDescription("Months","Month"); $MyData->setAbscissa("Months"); /* Create the pChart object */ $myPicture = new pImage(700,230,$MyData); /* Turn of Antialiasing */ $myPicture->Antialias = FALSE; /* Add a border to the picture */ $myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,"EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>100)); $myPicture->drawGradientArea(0,0,700,230,DIRECTION_HORIZONTAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,"EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>20)); $myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0)); /* Set the default font */ $myPicture->setFontProperties(array("FontName"=>"fonts/pf_arma_five.ttf","FontSize"=>6)); /* Define the chart area */ $myPicture->setGraphArea(60,40,650,200); /* Draw the scale */ $scaleSettings = array("GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE); $myPicture->drawScale($scaleSettings); /* Write the chart legend */ $myPicture->drawLegend(580,12,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); /* Turn on shadow computing */  $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); /* Draw the chart */ $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); $settings = array("Surrounding"=>-30,"InnerSurrounding"=>30); $myPicture->drawBarChart($settings); ob_clean();  //關鍵代碼,防止出現'映像因其本身有錯無法顯示'的問題。Header("Content-type: image/PNG");  /* Render the picture (choose the best way) */ $myPicture->autoOutput("examples/pictures/example.drawBarChart.simple.png");

怎麼把 $MyData->addPoints(array(150,220,300,250,420,200,300,200,100),"test");的字串test顯示為中文,怎麼把 $MyData->setAxisName(0,"Hits");顯示中文,比如 $MyData->setAxisName(0,"套");。。


回複討論(解決方案)

直接中文寫上去不行嗎?

直接中文寫上去不行嗎?

不行啊,直接什麼都沒有。

注釋掉 header("content-type:text/html; charset=utf-8");

注釋掉 header("content-type:text/html; charset=utf-8");

我開始沒有的,然後後面加上去的,也沒用啊,這不是亂碼,只是不顯示啊。。

是最新版的嗎?
待會下一個看看

1、header 是不要的,因為你是以圖片方式輸出
2、你選用的字型是西文字型,沒有漢字當然不能顯示,你需要選一款中文字型
3、如果你的程式不是utf-8的,那麼所有要輸出的漢字都必須轉成utf-8的

是最新版的嗎?
待會下一個看看

是啊,是最新的,老版本也是這個問題,所以我索性用最新版本的了。謝謝老徐。。我在跟源碼,慢慢研究。。求點撥

1、header 是不要的,因為你是以圖片方式輸出
2、你選用的字型是西文字型,沒有漢字當然不能顯示,你需要選一款中文字型
3、如果你的程式不是utf-8的,那麼所有要輸出的漢字都必須轉成utf-8的

你選用的字型是西文字型,沒有漢字當然不能顯示,你需要選一款中文字型,就是我這個選錯啦?$myPicture->setFontProperties(array("FontName"=>"fonts/pf_arma_five.ttf","FontSize"=>6));我改改去。。

1、header 是不要的,因為你是以圖片方式輸出
2、你選用的字型是西文字型,沒有漢字當然不能顯示,你需要選一款中文字型
3、如果你的程式不是utf-8的,那麼所有要輸出的漢字都必須轉成utf-8的

該用哪種字型呢?我用其他字型檔就是顯示亂碼,我定義了文體編碼,沒用,然後也用轉碼函數,也沒用,怎麼回事呢!?

假定你的伺服器是 windows 系統,且程式是 gbk 編碼的

function bm($ar) {  if(! is_array($ar)) return iconv('gbk', 'utf-8', $ar);  foreach($ar as &$v) $v = iconv('gbk', 'utf-8', $v);  return $ar;} /* CAT:Bar Chart */ /* pChart library inclusions */ include("Plugin/pChart2.1.4/class/pData.class.php"); include("Plugin/pChart2.1.4/class/pDraw.class.php"); include("Plugin/pChart2.1.4/class/pImage.class.php"); /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints(array(150,220,300,250,420,200,300,200,100), bm("測試")); $MyData->setAxisName(0, bm("套")); $MyData->addPoints(bm(array("1月","2月","3月","4月","5月","6月","7月","8月","9月")),"Months"); $MyData->setSerieDescription("Months","Month"); $MyData->setAbscissa("Months"); /* Create the pChart object */ $myPicture = new pImage(700,230,$MyData); /* Turn of Antialiasing */ $myPicture->Antialias = FALSE; /* Add a border to the picture */ $myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,"EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>100)); $myPicture->drawGradientArea(0,0,700,230,DIRECTION_HORIZONTAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,"EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>20)); $myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0)); /* Set the default font */ $myPicture->setFontProperties(array("FontName"=>"c:/windows/fonts/simhei.ttf","FontSize"=>6)); /* Define the chart area */ $myPicture->setGraphArea(60,40,650,200); /* Draw the scale */ $scaleSettings = array("GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE); $myPicture->drawScale($scaleSettings); /* Write the chart legend */ $myPicture->drawLegend(580,12,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); /* Turn on shadow computing */  $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); /* Draw the chart */ $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); $settings = array("Surrounding"=>-30,"InnerSurrounding"=>30); $myPicture->drawBarChart($settings); ob_clean();  //關鍵代碼,防止出現'映像因其本身有錯無法顯示'的問題。Header("Content-type: image/PNG");  /* Render the picture (choose the best way) */ $myPicture->autoOutput("examples/pictures/example.drawBarChart.simple.png");
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.