Highcharts是utf-8编码的,其本地的.net导出环境也是utf-8格式的,导致网页如果采用gb2312编码,显示正常,导出就乱码了。这种现象也同样经常出现在ajax的使用过程中。

ajax中一般的解决办法就是将中文等非英文的字符进行escape编码,再由后端模拟unescape解码,以避免编码的问题。跟着这个思路修改以解决Highcharts的导出乱码问题。同时为了配合后端简化,我使用了encodeURIComponent去编码。

由于需要在提交之前进行编码,那么我们需要修改Highcharts的导出文件的源码,你需要慎重考虑下。

1.前端

我们修改js/modules/exporting.src.js中的Highcharts.post方法:

// add the data
for (name in data) {
createElement('input', {
type: HIDDEN,
name: name,
value: encodeURIComponent(data[name])//here we add escape for all value
}, null, form);
}

  

修改上面的代码,在value的值前全部加上encodeURIComponent的编码方法。

2.后端

我们修改项目中的Exporter.cs,在class Exporter下增加下面的函数,并将接收的参数进行编码:

/// <summary>
/// Unescape for javascript escape. Return string;
/// </summary>
public static string UnEscape(string str)
{
return HttpUtility.UrlDecode(str);
} //在Exporter中我们同样要修改如下
//unescape all arguments
string extension;
fileName = UnEscape(fileName);
this.ContentType = UnEscape(type).ToLower();
this.Name = fileName;
this.Svg = UnEscape(svg);

  

保存,生成,将生成的dll文件覆盖现在使用的,再次导出基本上可以解决乱码的问题。

其他说明

1.由于使用的是HttpUtility.UrlDecode()方法,如果你传递前没有encodeURIComponent,且编码就为utf-8,那么导出也是正常的;

2.没有经过大数据的测试,用于正式项目前建议您先测试下;

3.压缩包:http://pan.baidu.com/share/link?shareid=1309032918&uk=352812205

4.由于使用了编码,因此导出的文件名也是可以被指定为中文的;

5.导出文件的width必须被指定,否则导致导出出错,待修复。

压缩包中的版本已经修复的问题:

1.未选中项目导出时未被忽略,描述:http://www.cnblogs.com/youngerliu/p/3177252.html

2.网页为gb2312,导出时中文乱码问题。

本文固定链接: http://jucelin.com/highcharts_export_gb2312.html | Jucelin

最新文章

  1. thinkphp 命名空间
  2. JavaScript-location:封装当前窗口正在打开的url的对象
  3. elasticsearch 查询(match和term)
  4. 常见的几个angular.js的问题
  5. 如何在Linux中使用rz/sz工具进行文件传输
  6. IOS 网络请求中设置cookie
  7. 【转载】Kafka High Availability
  8. windows7在局域网中无法映射驱动器问题解决
  9. 【GitHub-SwipeMenuListView】针对ListView item的側滑菜单
  10. 史上最简单的MySQL安装教程之Linux(CentOS6.8)下安装MySQL5.6
  11. python2.7.5 安装pip
  12. wipefs进程
  13. URLConnection(互联网)
  14. 洛谷 p1019 单词接龙
  15. Java 泛型 介绍
  16. 20155219 第十周课下作业-IPC
  17. Android 自定义View二(深入了解自定义属性attrs.xml)
  18. 转:Python语言编程学习资料(电子书+视频教程)下载汇总
  19. 黄金票据(Golden Ticket)的原理与实践
  20. hdu 4560 拆点最大流 ***

热门文章

  1. hdu 5476 Explore Track of Point(2015上海网络赛)
  2. [转]c++面向对象基础
  3. [转载]WEB缓存技术概述
  4. 转!!深入理解 Session 与 Cookie
  5. 生物信息 perl 脚本实战
  6. Windows定时器
  7. 基于TBDS的flume异常问题排查过程
  8. 【bzoj1040】骑士
  9. Android利用V4包中的SwipeRefreshLayout实现上拉加载
  10. hdu 2818 Building Block