找到这篇文章不容易,终于解决了我的问题。简单说就一句话,mb_convert_encoding($markwords,html-entities,utf-8)
开始时网上找到的方法是:去掉编译选项“--enable-gd-jis-conv” ,但我用的windows,不是linux,gd库都是编译好的东东,又不好重新编译,
到处找关闭gd库中 “jis-mapped japanese font support” 的方法,都没找到。最后看到 了这个,作者的文章超赞,谢谢作者。
/************************************下面是原文内容********************************************/
一个项目用到图表程序pchart2 然而输出的汉字竟然是乱码,换了其他图表程序(jpchart)也是一样,
于是直接写了一个简单使用gd库的测试程序,输出的也是乱码,证明确实是gd库函数问题
搜索了一下,说是由于gd库编译时添加了: --enable-gd-jis-conv 的支持( gd: enable jis-mapped japanese font ) , 在phpinfo()里也可以看到:jis-mapped japanese font support的支持为enable
还需要重新编译,我觉得太麻烦了,应该会有更好的解决办法。
就是将要处理的汉字,先由utf8的汉字转成html实体形式再使用.
示例代码:
pchart 示例代码:
addpoint(array(10,2,3,5,3),serie1);$dataset->addpoint(iconv_arr(array(jan,二月,三月,apr,may)),serie2);$dataset->addallseries();$dataset->setabsciselabelserie(serie2);// initialise the graph$test = new pchart(300,200);$test->loadcolorpalette(sample/softtones.txt);$test->drawfilledroundedrectangle(7,7,293,193,5,240,240,240);$test->drawroundedrectangle(5,5,295,195,5,230,230,230);// draw the pie chart$test->setfontproperties(fonts/simkai.ttf,8);$test->drawbasicpiegraph($dataset->getdata(),$dataset->getdatadescription(),120,100,70,pie_percentage,255,255,218);$test->drawpielegend(230,15,$dataset->getdata(),$dataset->getdatadescription(),250,250,250);$test->render(example14.png);/*** 将文本由utf8编码转化为数字形式编码(html实体)* @param $arr 该参数可以为数组或者string* @author steven lxq70361@qq.com*/function iconv_arr($arr){if(is_array($arr)){ foreach($arr as $k=>$v){ $arr[$k] = iconv_arr($v); } }else{ $arr = mb_convert_encoding($arr, html-entities,utf-8 );}return $arr;}?>
