使用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. Linux中的ls命令详细使用

    ls命令是linux下最常用的命令之一,ls跟dos下的dir命令是一样的都是用来列出目录下的文件,下面我们就来一起看看ls的用法 英文全名:List即列表的意思,当我们学习某种东西的时候要做到知其所 ...

  2. 服务器开启JMX监控

    JMX是一个框架,提供了一种功能,可以实时查询应用程序中通过JMX向外部公布的相应参数或者是其他应用程序,同时也可以通过JMX来实时地调用应用程序使用JMX向外部公布的接口,来完成一些功能操作. 如果 ...

  3. nodejs基础: 如何升级Noejs版本

    Node.js的开发非常活跃,它的最新稳定版本也频繁变化,你不时会发现,一个模块不能在你当前的Node版本上使用,此时你需要升级Node 幸运的是,可以用一种非常简单的方法来管理你的Node版本,即使 ...

  4. unity3d中物体的控制

    一.物体的循环移动和旋转 思路:通过对时间的计算,每隔一段时间让物体旋转,实现来回移动. float TranslateSpeed = 0.02f; float TranslateSpeedTime ...

  5. C++多线程同步之事件(Event)

    原文链接:http://blog.csdn.net/olansefengye1/article/details/53291074 一.事件(Event)原理解析 1.线程同步Event,主要用于线程间 ...

  6. Linux文件系统性能优化

    本文绝大部分是转载自CSDN刘爱贵专栏: http://blog.csdn.net/liuben/archive/2010/04/13/5482167.aspx另外根据参考文档增补了一部分内容. 由于 ...

  7. Django自带的用户认证

    1. 创建超级用户   python manage.py createsuperuser   2. 认证  校验用户名和密码  obj = auth.authenticate(request,user ...

  8. selenium+python自动化95-弹出框死活定位不到

    前言 部分小伙伴学了selenium的alert后,就不管啥弹出框都去用alert,这是行不通的,看到弹出框,先要确定是不是alert,是才能用,不是的话肯定不能用. 有些弹出框是div层,这种跟平常 ...

  9. git常用命令,冲突

    使用多个仓库git push cangkuming fenzhiming删除远程仓库 git push 远程仓库名 :删除目标分支 # 需要先删除本地目标分支 git pull <远程主机名&g ...

  10. 写下thinkphp5和thinkphp3.2的不同

    只列出一些自己的直观感受 1 引入了命令行,估计来源是laravel,前阵子刚练手完laravel5.0的系统, 感觉thinkphp5的命令行和laravel的很像 2 引入了路由,来源估计也是la ...