使用fusionChart主要是被其界面吸引了,各类图表都很好看,下载以后文档也很周全,支持的语言也很多种 ,容易上手。fusionChart工作原理主要是通过后台传xml数据源给报表前台flash flash复杂接收数据并渲染成最终的图表。

至于好不好用,仁者见仁了。我用起来感觉还是很舒服的,暂时还没做比较复杂的图表,目前的功能是够用的。这里主要说说使用中碰到的问题,和我的解决办法

第一 用过的人肯定都有会碰到,就是中文支持,按照默认的输出,肯定最后数据无法渲染。 fusionChart 有两种调用xml数据方法 setDataURL 和setDataXml方法。现就两种方式中文支持方法一一描述一下

1 先说 setDataXml吧,这个好解决,只要输出是response.setCaractEncoding("utf-8")即可,我的系统统一都是 utf-8编码,其它我没试。由于配置时已经加过编码过滤器了,所以这部也可省略。这样做的缺点就是输出xml过长可能会有问题。

2 setDataURL方法,我之前上网查过很多网站,说法都是fusionChart free版本的这个有bug,用这个不能支持中文。我试了很多方法也确实都不行,后翻到官方文档中带的例子中输出日语的一个,恍然大悟

Java代码

byte[] utf8Bom =  new byte[]{(byte) 0xef, (byte)
0xbb, (byte)
0xbf};   
String utf8BomStr = new
String(utf8Bom,"UTF-8");

byte[] utf8Bom = new byte[]{(byte) 0xef, (byte) 0xbb, (byte)
0xbf};String utf8BomStr = new String(utf8Bom,"UTF-8");

这一段是关键,就是需要在你输出的xml字符串之前加上utf-8
bom技术标示,这样前台就可以读出中文了。还有一点需要注意,就是url是带参数的如下

/statistics/chartData.do?name=${searchName}${urlParam}“&”符号fusionChart是不认的,也需要URLEncoder.encoding转换中文的支持就先说到这了,我用的
setDataURL 中文显示现在已经没什么问题了

第二 就是比较头疼的 柱状图中横坐标
标题中文不显示的问题,主要因为fusionChart强行旋转了y轴标题的文字,汉字是不支持的 网上的解决办法是加上xml根结点加属性
rotateYAxisName=‘0’ 我试过不起作用

后来才知道是  fusionChart
free版本是不支持这个属性,fusionChart 
v3版本支持这个,我下载过破解的v3版试过,确实好用,但我不喜欢v3的默认风格,所以还是想从free版上解决问题。我的解决办法就是sothink
swf decompiler工具把相应的swf破解了,直接改源代码
既然是yAxisName出了问题当然就是从这下手,找到yAxisName的相关代码,很快找到生成的那段AS

Js代码

if (this.Params.xAxisName !=
"")   
   
{   
       
createText(this.getLevel(), this.Params.xAxisName,
this.Objects.Canvas.xPos + this.Objects.Canvas.width / 2,
this.Objects.Canvas.height + this.Objects.xAxisName.yPos,
this.Params.outCnvBaseFont, this.Params.outCnvBaseFontSize,
this.Params.outCnvBaseFontColor, true, "center", "center", null,
true);   
    } // end
if   
    if
(this.Params.yAxisName !=
"")   
   
{   
       
createText(this.getLevel(), this.Params.yAxisName,
this.Objects.yAxisName.xPos, this.Objects.Canvas.yPos +
this.Objects.Canvas.height / 2, "Verdana",
Number(this.Params.outCnvBaseFontSize) + 1,
this.Params.outCnvBaseFontColor, false, "center", "center", 270,
true);   
    } // end
if

if (this.Params.xAxisName != "") { createText(this.getLevel(),
this.Params.xAxisName, this.Objects.Canvas.xPos +
this.Objects.Canvas.width / 2, this.Objects.Canvas.height +
this.Objects.xAxisName.yPos, this.Params.outCnvBaseFont,
this.Params.outCnvBaseFontSize, this.Params.outCnvBaseFontColor,
true, "center", "center", null, true); } // end if if
(this.Params.yAxisName != "") { createText(this.getLevel(),
this.Params.yAxisName, this.Objects.yAxisName.xPos,
this.Objects.Canvas.yPos + this.Objects.Canvas.height / 2,
"Verdana", Number(this.Params.outCnvBaseFontSize) + 1,
this.Params.outCnvBaseFontColor, false, "center", "center", 270,
true); } // end if

注意看倒数第五 和倒数第二个参数 输出x轴和y轴有什么不同,改成一样就可以了,编译好把flash替换了刷新页面
横向输出的y轴坐标已经出来了。还有点不完美的就是第一个字显示了一半被截掉了一样,看着不舒服,解决办法: 输出的xml根节点加上
chartLeftMargin=‘30’属性。ok大功告成

fusioncharts Y轴不显示中文的解决方法(转载)的更多相关文章

  1. Unity 3D 无法显示中文的解决方法

    大家开始用unity3D时想必都会遇到一个问题,使用中文时会乱码.这是由于编码方式不同导致的,具体解决方法如下: 程序写代码什么的最好下个像Notepad++类似的工具,这里使用Notepad++修改 ...

  2. secureCRT linux shell显示中文乱码 解决方法

    引:有没有这样的经历: 1.在shell中直接查看包含中文的文件时,出现一堆火星文,不得不下载下来window看. 2.无法正常的在shell中输入中文. 3.make的时候输出一堆乱码. 以下是查阅 ...

  3. Linux中tree无法正常显示中文的解决方法

    tree命令以树状图列出目录的内容. 命令 tree -L n 的时候往往是无法正常显示中文的 先开始我以为是tree命令对中文是不支持的,后来百度了一下,网上有几个解决办法 安装新的tree可以解决 ...

  4. python中后端数据序列化不显示中文的解决方法

    我们在前后端交互的时候,让序列化的数据更友好的显示,我们会用到 import json js = json.loads('{"name": "多多"}') pr ...

  5. Linux显示中文乱码解决方法

    vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB231 ...

  6. matplotlib y轴标注显示不全以及subplot调整的问题

    matplotlib y轴标注显示不全以及subplot调整的问题 问题: 我想在y轴显示的标注太长,想把它变成两行显示,发现生成的图形只显示的第二行的字,把第一行的字挤出去了 想要的是显示两行这样子 ...

  7. echarts Y轴名称显示不全(转载)

    转载来源:https://blog.csdn.net/qq8241994/article/details/90720657今天在项目的开发中遇到的一个问题,echarts Y轴左侧的文字太多了,显示不 ...

  8. 两种解决Qt5显示中文乱码的方法(使用QStringLiteral和#pragma execution_character_set("utf-8")两种方法)

    升级到Qt5.X之后,原先解决的Qt显示中文乱码的方法突然不适用了,找了很多方式来解决这个问题第一种:在公司代码里看到的方法,先将对应的cpp文件用windows自带的记事本打开,另存为UTF-8格式 ...

  9. Python3:读取配置dbconfig.ini(含有中文)显示乱码的解决方法

    Python3:读取配置dbconfig.ini(含有中文)显示乱码的解决方法 一.原因 Python 3 中虽有encoding 参数,但是对于有BOM(如Windows下用记事本指定为utf-8) ...

随机推荐

  1. 1108 Finding Average (20 分)

    1108 Finding Average (20 分) The basic task is simple: given N real numbers, you are supposed to calc ...

  2. Hadoop2.0产生背景

    Hadoop与Hadoop生态系统的区别 Hadoop:是一个适合大数据分布式存储和分布式计算的平台,在Hadoop1.x中对应于HDFS和MapReduce: Hadoop生态系统:是一个很庞大的概 ...

  3. ExtJS模板与菜单的使用案例-床位卡

    ExtJS的模板的使用: 项目中场景基本就是表格模型: TPL:自己编写模板 store:数据源 UI组件: tbar,rbr,bbar实现工具栏 PageBar与StatusBar:可以针对TPL的 ...

  4. 求m-n之间数字的和

    unction sum(m,n){         var sum = 0;         if(m>n){                 for(var i=n; i<=m; i++ ...

  5. MySQL 查看执行的SQL记录

    我们时常会有查看MySQL服务端执行的SQL记录.在MySQL5.1之后提供了支持,通过在启动时加入-l 或者--log选项即可: mysqld -l mysqld --log 在后面的版本(5.1. ...

  6. 线程池,queue模块增加用法

    1 同一个进程内的队列(多线程) import queue queue.Queue() 先进先出 queue.LifoQueue() 后进先出 queue.PriorityQueue() 优先级队列 ...

  7. python urlretrieve 下载图片

    python 3中urlretrieve方法直接将远程数据下载到本地.为什么不行? 55 import re import urllib.request def getHtml(url): page ...

  8. servletConfig的使用案例

    servletConfig参数的使用案例 首先,建立Dynamic Web Project ,同样命名FirstServlet,然后建立Servlet:Login.java,包名为cc.openhom ...

  9. 34. Studio字符串分割split用法

    var v = "1,2,3"; var arr = v.toString().split(","); 备注:最好先toString()转为字符串,不然有些情况 ...

  10. leetcode557

    public class Solution { public string ReverseWords(string s) { var list = s.Split(' ').AsEnumerable( ...