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学习小结(一)
Jul 06 NodeJs
Nodejs+express+html5 实现拖拽上传
Aug 08 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 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
DSP接收机前端设想
2021/03/02 无线电
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
python psutil库安装教程
2018/03/19 Python
python简易远程控制单线程版
2018/06/20 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
办公室文员工作职责
2014/01/31 职场文书
《童年》教学反思
2014/02/18 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
学习保证书范文
2014/04/30 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
校友会致辞
2015/07/30 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
node快速搭建后台的实现步骤
2022/02/18 NodeJs