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加密Crypto的实例代码
Jul 07 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
Nodejs把接收图片base64格式保存为文件存储到服务器上
Sep 26 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 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
中国第一家无线电行
2021/03/01 无线电
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
微信小程序开发探究
2016/12/27 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
Python中typing模块与类型注解的使用方法
2019/08/05 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
物流仓管员岗位职责
2013/12/04 职场文书
书法比赛获奖感言
2014/02/10 职场文书
科研课题实施方案
2014/03/18 职场文书
实习单位证明范例
2014/11/17 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
西安事变观后感
2015/06/12 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers