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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 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中模拟链表和链表的基本操作示例
2016/02/27 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
微信小程序使用蓝牙小插件
2019/09/23 Javascript
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
Python Requests库基本用法示例
2018/08/20 Python
python tornado微信开发入门代码
2018/08/24 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
Python中Selenium模块的使用详解
2020/10/09 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
项目总经理岗位职责
2014/02/14 职场文书
致共产党员倡议书
2014/04/16 职场文书
家长给学校的建议书
2014/05/15 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
民主生活会发言材料
2014/10/20 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
乌镇导游词
2015/02/02 职场文书
爱晚亭导游词
2015/02/09 职场文书