Skip to content

Instantly share code, notes, and snippets.

@struCoder
Created March 2, 2017 10:17
Show Gist options
  • Save struCoder/fac640b70af230a14a0441cdb5694ad3 to your computer and use it in GitHub Desktop.
Save struCoder/fac640b70af230a14a0441cdb5694ad3 to your computer and use it in GitHub Desktop.
nodejs csv乱码解决方案
// https://cnodejs.org/topic/516e0ab46d382773067a5473
var http = require('http');
var url = require('url');
var Iconv = require('iconv').Iconv;
var crypto = require('crypto');
var server = http.createServer(function(req, res){
var path = url.parse(req.url).pathname;
if(path == '/favicon.ico'){
res.end('');
}else{
var filename = '2012-06-01 至 2012-06-01 数据报表.csv';
var content = "序号,日期,成交商品数,客单价,关注次数,搜索次数,收藏人数\n1, 2012-06-01, 1, 1, 1, 1, 1\n1, 2012-06-02, 1, 1, 1, 1, 1";
//excel2007默认不支持utf-8编码的csv文件
var iconv = new Iconv('UTF-8', 'GBK//IGNORE');
content = iconv.convert(content);
res.setHeader('Pragma', 'public');
res.setHeader('Expires', '0');
res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0');
// res.setHeader('Cache-Control', 'pre-check=0, post-check=0, max-age=0');
// res.setHeader('Content-Transfer-Encoding', 'none');
res.setHeader('Content-Type', 'text/csv; charset=GBK');
filename = iconv.convert(filename).toString('binary');
res.setHeader('Content-Disposition', 'attachment;filename="'+ filename +'"');
res.setHeader('Content-Length', content.length);
res.end(content);
}
}).listen(22222);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment