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 相关文章推荐
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 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的socket通信
2015/08/11 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
python中使用np.delete()的实例方法
2021/02/01 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
办公室文秘岗位职责
2013/11/15 职场文书
军训的自我鉴定
2013/12/10 职场文书
市场部管理制度
2014/02/02 职场文书
大一新生期末自我评价
2014/09/12 职场文书
建国大业观后感600字
2015/06/01 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
AJAX学习笔记
2021/05/18 Javascript
浅谈Python numpy创建空数组的问题
2021/05/25 Python
pt-archiver 主键自增
2022/04/26 MySQL
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server
带你了解Java中的ForkJoin
2022/04/28 Java/Android