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简单实现中英文翻译
May 04 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
php5与php7的区别点总结
2019/10/11 PHP
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
深入理解Python装饰器
2016/07/27 Python
解决python 输出是省略号的问题
2018/04/19 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
Python对excel文档的操作方法详解
2018/12/10 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
一套.net面试题及答案
2016/11/02 面试题
法雷奥SQA(electric)面试问题
2016/01/23 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
教师的实习自我鉴定
2013/12/17 职场文书
财政专业求职信范文
2014/02/19 职场文书
环保公益广告语
2014/03/13 职场文书
学习十八大宣传标语
2014/10/09 职场文书
优秀班集体申报材料
2014/12/25 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
民事申诉状范本
2015/05/20 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python