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

Highcharts导出gb2312乱码问题的更多相关文章

  1. 解决mysql导入导出数据乱码问题

    最近在linux上面用mysqldump导出数据,放在windows系统中导入就会出现中文乱码,然后就会导致出现: Unknown MySQL server host和Can't connect to ...

  2. mysqldump 导出中文乱码

    命令:mysqldump -uroot -p test > /data/test.sql 导出后的数据库打开是乱码,如下: 开始以为打开的方式不对,就用记事本打开后,用utf-8的编码格式另保存 ...

  3. 解决highCharts导出功能汉化问题

    本文以highCharts中文网上的例子为原型,处理解决highCharts导出功能为英文的问题. 我们使用highCharts当然希望所有提示或文本都是中文的了,但是highCharts的默认语言是 ...

  4. 解决PHP使用CVS导出Excel乱码问题

    在使用PHP生成CVS文件后通过Excel打开发现中文全部变成了乱码,之前在我本地win08通过WPS正常的,但上传到服务器Linux在服务器上测试出现了乱码 一开始以后是Linux的问题但后来测试时 ...

  5. ABP进阶教程10 - PDF导出中文乱码

    点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出PDF,中文信息导出为乱码. 解决方案 导出PDF是通过pdfmake.js实现的. 检查发现是pdfmake引用的vfs_fonts.js字 ...

  6. ABP进阶教程9 - CSV导出中文乱码

    点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出CSV,中文信息导出为乱码. 解决方案 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\View ...

  7. 记录一次乱码问题修复经历!排查修复Poi-tl使用HttpServletResponse导出Word乱码问题

    问题 Poi-tl中HttpServletResponse导出Word乱码问题: 文件名使用中文,中文名乱码 导出的文件下载后乱码 原因 文件名中文乱码: 没有设置文件名的编码规则 文件下载乱码: 在 ...

  8. 解决PHP下导出csv乱码小记

    我们之前都是使用PHPexcel导出我们的一些数据的,由于Phpexcel对导出超出1万条数据会导至超时和内存暴涨,后来我们就改用数据导出成csv格式的. 相信很多朋友们在用PHP导出csv文件时都遇 ...

  9. ZendStudio 解决svn导出项目乱码问题

    从svn导出项目往往会出现乱码,可以右击项目,点击properties(或者选中项目alt+enter键进入)直接修改项目编码为utf-8,但是html文件还是乱码. 下面的方法可以解决: windo ...

随机推荐

  1. Android SQLite数据库

    SQLite数据库 SQLiteDatabase //管理操作数据库    管理    openDatabase //打开    openOrCreateDatabase //打开或创建    操作 ...

  2. python2 urllib 笔记

    python2 urllib 笔记 import urllib base='http://httpbin.org/' ip=base+'ip' r=urllib.urlopen(ip) print r ...

  3. java 内部类3(匿名内部类)

    匿名内部类: 1.没有类名的类就叫匿名内部类 2.好处:简化书写. 3.使用前提:必须有继承或实现关系......不要想着你自己没有钱你没可是你爸有 4.一般用于于实参.(重点) class Oute ...

  4. Unity5 新功能解析--GI(全局光)

    http://blog.csdn.net/leonwei/article/details/48009059 Unity5带来的最大的改变就是全新的GI,在烘焙引擎上抛弃了4的beast,使用了虚幻采用 ...

  5. webstorm搭建node服务器

    前言,搭建服务器,必须有node.js环境(吐槽:本来就是用node搭建的(⊙o⊙)…) 下载node.js 网址  https://nodejs.org/en/ 先新建项目: 这里选择Node.js ...

  6. 带不带protype的区别

    总结写在前面: ①:带有protype:表示类的扩展,必须new后才能使用. ②:不带protype:属于静态方法,直接调用即可. html代码: <!DOCTYPE html> < ...

  7. jmeter 实时搜索结果

    因为JMeter 2.13你可以得到实时搜索结果发送到后端通过 后端侦听器 使用潜在的任何后端(JDBC.JMS网络服务,€Š) 通过提供一个实现类 AbstractBackendListenerCl ...

  8. C# Form内存回收

    namespace WebBrowserMemoryTest { public partial class Form1 : Form { private int _Pages; public Form ...

  9. Unity Invoke 方法

    Invoke() 方法是 Unity3D 的一种委托机制 如: Invoke("a", 5);   它的意思是:5 秒之后调用 a() 方法: 使用 Invoke() 方法需要注意 ...

  10. MyBatis实体类映射文件模板

      <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC " ...