广州鸿名健康科技有限公司


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

网络编程 Nodejs中读取中文文件编码问题、发送邮件和定时任务实例 06-22

关于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解码。运行结果如下:

查看图片

更多参见: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 下午茶!'); });

运行结果更和谐,呵呵:

查看图片

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

更多参见:node-schedule

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

AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
一、闲扯有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能。包括用户角色、发表微博、共享位置等等。这

node爬取微博的数据的简单封装库nodeweibo使用指南
一、前言就在去年12月份,有个想法是使用node爬取微博的数据,于是简单的封装了一个nodeweibo这个库。时隔一年,没有怎么维护,中途也就将函数形式

基于豆瓣API+Angular开发的web App
一、扯淡的说name:【豆瓣搜索】最近关注了下豆瓣的API,发现豆瓣开放平台需要加强API文档撰写啊....但是有个可喜的发现豆瓣V2接口提供了搜索接口。最


编辑:广州鸿名健康科技有限公司

标签:豆瓣,简单,文件,方式,中文