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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Jul 26 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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中定时计划任务的实现原理
2013/01/08 PHP
如何使用Strace调试工具
2013/06/03 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
nginx下安装php7+php5
2016/07/31 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
动态控制Table的js代码
2007/03/07 Javascript
javascript eval函数深入认识
2009/02/21 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
使用js画图之饼图
2015/01/12 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
python连接池实现示例程序
2013/11/26 Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
Python常见异常分类与处理方法
2017/06/04 Python
Python通过文本和图片生成词云图
2020/05/21 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
使用Python封装excel操作指南
2021/01/29 Python
美国保健品专家:Life Extension
2018/05/04 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
工厂车间标语
2014/06/19 职场文书
如何写观后感
2015/06/19 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
Python学习之异常中的finally使用详解
2022/03/16 Python
Android中的Launch Mode详情
2022/06/05 Java/Android
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers