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 npm install全局安装和本地安装的区别
Jun 05 NodeJs
使用nodejs、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
深入学习nodejs中的async模块的使用方法
Jul 12 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 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
PHP文本操作类
2006/11/25 PHP
扩展你的 PHP 之入门篇
2006/12/04 PHP
php实现的在线人员函数库
2008/04/09 PHP
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
python设置检查点简单实现代码
2014/07/01 Python
python监控文件并且发送告警邮件
2018/06/21 Python
python实现黑客字幕雨效果
2018/06/21 Python
wxPython的安装与使用教程
2018/08/31 Python
python tkinter界面居中显示的方法
2018/10/11 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
学前教育毕业生自荐信范文
2013/12/24 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
股权投资协议书
2016/03/23 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
Python pygame实现中国象棋单机版源码
2021/06/20 Python
Redis实现短信验证码登录的示例代码
2022/06/14 Redis
微信小程序实现轮播图指示器
2022/06/25 Javascript