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极简入门教程(三):进程
Oct 27 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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操作符与控制结构代码
2011/12/30 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
IE与firefox之jquery用法区别
2008/10/03 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
python2.7到3.x迁移指南
2018/02/01 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
Python 使用office365邮箱的示例
2020/10/29 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
个人银行贷款担保书
2014/04/01 职场文书
保护环境的标语
2014/06/09 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
人民调解协议书范本
2014/10/11 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
Golang Web 框架Iris安装部署
2022/08/14 Python