最近在做一个内容展示系统,里面内容为各个小区各项业务的数据然后以图表的形式展示,但是里面有些地方要用中文的,结果出现乱码现象,今天我在这里总结一下通用的处理方案。希望能对大家有所帮助。
一.调用动态的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 as link. Before invoking the link it again encodes the Url. If you are passing multilingual characters via a Url or do not want this decode-encode mechanism to be handled by chart you can set unescapeLinks='0' in element of the chart's XML data。

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

四. 结束语

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

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

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