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(三)--- Node.js模块
May 25 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
图解NodeJS实现登录注册功能
Sep 16 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
我的论坛源代码(三)
2006/10/09 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
QUnit jQuery的TDD框架
2010/11/04 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
python读取和保存图片5种方法对比
2018/09/12 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python 堆和优先队列的使用详解
2019/03/05 Python
python实现图片上添加图片
2019/11/26 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
django ORM之values和annotate使用详解
2020/05/19 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
小学生倡议书范文
2014/05/13 职场文书
推广普通话演讲稿
2014/05/23 职场文书
品牌推广策划方案
2014/05/28 职场文书
代办委托书怎么写
2014/08/01 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
python blinker 信号库
2022/05/04 Python