Nodejs中读取中文文件编码问题、发送邮件和定时任务实例


Posted in NodeJs onJanuary 01, 2015

关于nodejs读取中文文件真是折腾了不少时间,网上各种方案,最后没有一个适用我,好在解决了。

下面的三个知识点都是从项目中抽出的,要单独运行脚本的话需要用全局模式来安装模块,比如安装中文转换模块(后续其它的也需要这么做):

Nodejs中读取中文文件编码问题、发送邮件和定时任务实例

npm install -g iconv-lite
npm install -g nodemailer
npm install -g node-schedule

1、nodejs读取中文文件编码问题

准备一个文本文件(当然也可以是csv文件等)test.txt和text.csv,nodejs文件test.js如下:

var iconv = require('iconv-lite');

var fs = require('fs');
var fileStr = fs.readFileSync('D:\\test.csv', {encoding:'binary'});

var buf = new Buffer(fileStr, 'binary');

var str = iconv.decode(buf, 'GBK');
console.log(str);

直接读文件的话是乱码,不信你可以试试。需要先统一用二进制编码方式读取,然后再用GBK解码。运行结果如下:

Nodejs中读取中文文件编码问题、发送邮件和定时任务实例

更多参见:iconv-lite

2、nodejs发送邮件

啥都不想说,直接上代码,简单易懂:

var nodemailer = require('nodemailer');
//配置邮件

var transporter = nodemailer.createTransport('SMTP',{

    service: '163qiye',

    auth: {

        user: 'zhoujie0111@126.com',

        pass: '123456',

    }

});
//发送邮件

var sendmail = function(html){

    var option = {

            from:"zhoujie0111@126.com",

            to:"zhoujie0111@126.com,zhoujie0111@126.com", 

            cc:'zhoujie0111@126.com'

        }

    option.subject = '我5年前制定的五年计划'

    option.html= html;

    transporter.sendMail(option, function(error, response){

        if(error){

            console.log("fail: " + error);

        }else{

            console.log("success: " + response.message);

        }

    });

}
//调用发送邮件

sendmail("邮件内容:<br/>My goal for 2015 is to accomplish the goals of 2014 which I should have done in 2013 because I made a promise in 2012 & planned in 2011!");

更多参见:nodemailer

3、nodejs定时任务

这个用法很多,如果熟悉linux crontab语法,这个就更简单了。我邹的这个例子很和谐,呵呵:

var schedule = require('node-schedule');
/*方式一:

    指定某一个时间执行任务

*/

var schedule = require('node-schedule');

var date = new Date(2014, 12, 31, 16, 1, 0);
var j = schedule.scheduleJob(date, function(){

    console.log('2015 will soon come.');

});
/*方式二:

    在每个小时的多少分钟执行

*/

var rule = new schedule.RecurrenceRule();

rule.minute = 1;

var j = schedule.scheduleJob(rule, function(){

    console.log('I\'m very happy now!');

});
/*方式三:

    类似crontab

*/

var j = schedule.scheduleJob('1 * * * *', function(){

    console.log('It\'s time to 下午茶!');

});

运行结果更和谐,呵呵:

Nodejs中读取中文文件编码问题、发送邮件和定时任务实例

不要奇怪为什么第一个计划任务没有执行,因为这个是格林威治时间,它需要等8个小时后再执行。呵呵~~

更多参见:node-schedule

听了一天的悲伤的音乐,越听越开心。哈哈

NodeJs 相关文章推荐
Nodejs进程管理模块forever详解
Jun 01 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
详解Nodejs内存治理
May 13 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 #NodeJs
nodejs中实现路由功能
Dec 29 #NodeJs
NodeJS制作爬虫全过程(续)
Dec 22 #NodeJs
NodeJS制作爬虫全过程
Dec 22 #NodeJs
nodejs中操作mysql数据库示例
Dec 20 #NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 #NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 #NodeJs
You might like
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
PHP $_FILES函数详解
2011/03/09 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
BootStrap中
2016/12/10 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
python处理按钮消息的实例详解
2017/07/11 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
顶岗实习计划书
2014/01/10 职场文书
运动会获奖感言
2014/02/11 职场文书
产品质量承诺书范文
2014/03/27 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang