FusionCharts的中文乱码解决

常见中文乱码问题  

FusionCharts学习及使用笔记》

在实际工作中刚开始遇到最多的问题就是中文乱码问题,这也是我收到的邮件中朋友们遇到的最多的问题。今天我就在这里总结一下通用的处理方案。希望能对大家有所帮助。

.调用动态的xml字符串

如果程序是访问动态的xml字符串,这个时候出问题的情况很少,因为生成动态xml字符串的过程中一直保持utf-8状态就OK了。

.调用静态的xml文件

如果程序是调用静态的xml文件,这个时候出问题的情况就很多了。从我收到的邮件中,大部分都是访问静态的xml文件,也是出问题最多的情况。

这时分两种情况,第一种情况是这个静态的xml文件是你自己动态生成的:那么在你动态生成的时候你需要保存为gbk格式的文件,而非utf-8格式的文件,这样中文就不会有乱码了。第二种情况是这个文件是你拿官方的xml文件改编的:那么你需要把此文件另存为gbk格式的文件,就OK了。

.link传参出现乱码问题

例:link="JavaScript:myJSFunction('USA', 235);"

link="JavaScript:myJSFunction('中文', 235);"//此时中文会出现乱码

这是一个网友给我发邮件时遇到的问题,其实之前我没有遇见过此问题,因为我之前用到的link里面都只传了数字或英文的参数,还没有传过中文参数。后来我就自己测试了一下,确实存在此问题,无论用何种方式在何种地方去转码都无法解决此问题。我当时也不知道解决方案,过了几个小时脑袋突然灵光一闪,记得自己好像在FusionCharts的官方文档里看到过关于link的文章。那个周六,我花了半天时间把FusionCharts V3.1 API文档,从头到尾翻看了3遍,还是没找到。我当时很郁闷啊,还是不甘心,然后我就在FusionCharts V3.2 API上面找。终于功夫不负苦心人,让我给找到了。见图:

原文如下。

Note: Internally the chart decodes a Url that you set aslink. Before invoking the link it again encodes the Url. If you are passingmultilingual characters via a Url or do not want this decode-encode mechanismto be handled by chart you can set unescapeLinks='0' in <chart> elementof the chart's XML data

就是说你在xml文件的chart属性中添加 unescapeLinks='0' ,那你的js乱码问题就轻松解决啦。

四. 结束语

以上遇到的乱码问题,应该是FusionCharts中文乱码的常见问题。如果还有其他的问题,以及类似问题的其他解决方案,请email给我,谢谢。

最后还是鼓励大家多看官方文档,虽然我个人觉得V3.1 APIV3.2 API做的好,但V3.2 API里面有很多新东西,大家还是要多看。

以上内容参考文献:FusionChartsV3.1 API&& FusionChartsV3.2 API

 

FusionCharts网页乱码  

2010-12-15 11:16:12|  分类:Fusioncharts |  标签:|字号大中小 订阅

尘归尘,土归土,乱码应归垃圾桶。这篇文章就是来彻底终结FusionCharts中文乱码问题的!

通常而言,FusionCharts的中文乱码其实还并不太常见,比如,你将FusionCharts随带的例子中的xml文件中的某一英文改为中文(比如Pie3D.html),运行后,中文其实是可以显示的。但你也可能注意到,在这种方式下,是直接从硬盘读取的xml文件,也就是你每次显示一次Flash图表,都要进行一次I/O操作,很显然,这种方式肯定是不大好的,所以你很可能就想到了一次性将xml读取出来放在内存里或是就放在页面的一个隐含参数里(比如type=hidden的隐含参数),那么这个时候,中文乱码就产生了!

现在我们不采用直接读取xml文件的形式,而是将读取的xml文本存储在页面一个隐含参数中,如(注:将采用jsp的形式,其他语言都是类似的)

<div name="chartXml" style="display:none"><%=chartXml%></div>

chartXml就是xml文本,与xml文件中的内容是一致的,例如:
<chart caption=’
月销售汇总’ subcaption=’2006’ formatNumberScale=’0′ xAxisName=’Month’ yAxisName=’Sales’yAxisMinValue=’15000′  numberPrefix=’a’ numberSuffix=’b’ showValues=’1′alternateHGridColor=’FCB541′ alternateHGridAlpha=’20′ divLineColor=’FCB541′divLineAlpha=’50′ canvasBorderColor=’666666′ baseFontColor=’666666′lineColor=’FCB541′ >

<set label=’Jan’value=’17400′ />

<setlabel=’Feb’ value=’19800′ />

<setlabel=’Mar’ value=’21800′ />

<setlabel=’Apr’ value=’23800′ />

<setlabel=’May’ value=’29600′ />

<setlabel=’Jun’ value=’27600′ />

<setlabel=’test2′ title=’test’ hint=”test” value=’31800′ />

<setlabel=’Aug’ value=’39700′ />

<setlabel=’Sep’ value=’37800′ />

<setlabel=’Oct’ value=’21900′ />

<setlabel=’Nov’ value=’32900′ />

<setlabel=’Dec’ value=’39800′ />

<styles>

<definition>

<stylename=’Anim1′ type=’animation’ param=’_xscale’ start=’0′ duration=’1′ />

<stylename=’Anim2′ type=’animation’ param=’_alpha’ start=’0′ duration=’0.6′ />

<stylename=’DataShadow’ type=’Shadow’ alpha=’40′/>

</definition>

<application>

<applytoObject=’DIVLINES’ styles=’Anim1′ />

<applytoObject=’HGRID’ styles=’Anim2′ />

<applytoObject=’DATALABELS’ styles=’DataShadow,Anim2′ />

</application>

</styles>

</chart>

调用显示的地方为:

<script type=“text/javascript”>

var chart= new FusionCharts(“FusionCharts/Pie3D.swf “,“ChartId”, “100%”, “300″, “0″, “0″ );

var chartXMLObj= document.getElementById(“chartXml”);

var chartXML= chartXMLObj.innerHTML;

//解决中文乱码的最关键一行

//有时,如果没有这一行,可能也不会有乱码

//但大多数时候会有乱码,所以这行一定不能掉

//encodeURI是对chartXML进行编码

chartXML = encodeURI(chartXML);

chart.setDataXML(chartXML);

</script>

这种方式我认为可以解决FusionCharts所有的中文乱码问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值