Highcharts导出gb2312乱码问题
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乱码问题的更多相关文章
- 解决mysql导入导出数据乱码问题
最近在linux上面用mysqldump导出数据,放在windows系统中导入就会出现中文乱码,然后就会导致出现: Unknown MySQL server host和Can't connect to ...
- mysqldump 导出中文乱码
命令:mysqldump -uroot -p test > /data/test.sql 导出后的数据库打开是乱码,如下: 开始以为打开的方式不对,就用记事本打开后,用utf-8的编码格式另保存 ...
- 解决highCharts导出功能汉化问题
本文以highCharts中文网上的例子为原型,处理解决highCharts导出功能为英文的问题. 我们使用highCharts当然希望所有提示或文本都是中文的了,但是highCharts的默认语言是 ...
- 解决PHP使用CVS导出Excel乱码问题
在使用PHP生成CVS文件后通过Excel打开发现中文全部变成了乱码,之前在我本地win08通过WPS正常的,但上传到服务器Linux在服务器上测试出现了乱码 一开始以后是Linux的问题但后来测试时 ...
- ABP进阶教程10 - PDF导出中文乱码
点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出PDF,中文信息导出为乱码. 解决方案 导出PDF是通过pdfmake.js实现的. 检查发现是pdfmake引用的vfs_fonts.js字 ...
- ABP进阶教程9 - CSV导出中文乱码
点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出CSV,中文信息导出为乱码. 解决方案 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\View ...
- 记录一次乱码问题修复经历!排查修复Poi-tl使用HttpServletResponse导出Word乱码问题
问题 Poi-tl中HttpServletResponse导出Word乱码问题: 文件名使用中文,中文名乱码 导出的文件下载后乱码 原因 文件名中文乱码: 没有设置文件名的编码规则 文件下载乱码: 在 ...
- 解决PHP下导出csv乱码小记
我们之前都是使用PHPexcel导出我们的一些数据的,由于Phpexcel对导出超出1万条数据会导至超时和内存暴涨,后来我们就改用数据导出成csv格式的. 相信很多朋友们在用PHP导出csv文件时都遇 ...
- ZendStudio 解决svn导出项目乱码问题
从svn导出项目往往会出现乱码,可以右击项目,点击properties(或者选中项目alt+enter键进入)直接修改项目编码为utf-8,但是html文件还是乱码. 下面的方法可以解决: windo ...
随机推荐
- 2 CSS
2 CSS CSS基础 html 在一个网页中负责的事情是一个页面的结构css(层叠样式表) 在一个网页中主要负责了页面的数据样式. 编写css代码的方式: 第一种: 在style标签中编写c ...
- final简介
final简介 final用来修饰方法和属性表示特殊的意义.修饰方法时表示方法不能被重写:修饰属性时表示属性不能被改变,这里属性又分为对象和基本类型,修饰基本类型表示基本类型赋值以后不能再被赋值,修饰 ...
- 记录---base64
什么是Base64呢? Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下 ...
- mac10.12的Cocopods安装使用
Cocopods的安装 CocoaPods应该是iOS最常用最有名的类库管理当我们开发iOS应用时,会经常使用到很多第三方开源类库,比如AFNetWorking等等,可能某个类库又用到其他的库,手动一 ...
- Convention插件 struts零配置
http://blog.csdn.net/spyjava/article/details/13631961系列课程使用 注解:http://www.yiibai.com/struts_2/struts ...
- phalcon: eventManager事件管理(结合dispatcher调度控制器)制作简单的acl
制作简单的acl, dispatcher(专门用来加载或调度或跳转到相应的url地址即XXXcontroller的调度器或控制器,能够在controller执行前对controller进行停止跳转等) ...
- assert的用处
ASSERT函数是用于调试中,也就是说在你的代码中当是Debug的时候它完成对参数的判断,如果是TRUE则什么都不做,如果是FALSE则弹出一个程序中断对话框提示程序出现错误.在Release版本中它 ...
- 物料BOM和生产订单BOM的区别
物料BOM和生产订单BOM的区别[@more@] 一般企业生产部在SAP创建生产订单的时候,就会产生一个生产订单BOM,这里的生产订单BOM是读取的物料BOM. 由于其它原因,需要修改成品的某几个零部 ...
- Access中多表内联的SQL写法
在Access中多表内联,可以使用传统的where条件逐行筛选,如: SELECT SNAME,CNAME,DEGREE FROM STUDENT,COURSE,SCORE where student ...
- js 继承inheritance/extends
主要就是<javascript语言精粹>语言精粹中的内容 5.1伪类 Function.prototype.method = function(name,func){ this.proto ...