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入门详解(多篇文章结合)
Mar 07 NodeJs
nodejs的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
nodejs开发微博实例
Mar 25 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
分享五个Node.js开发的优秀实践 
Apr 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
PHP 图片上传代码
2011/09/13 PHP
php生成随机数的三种方法
2014/09/10 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
js用图作提交按钮或超连接
2008/03/26 Javascript
top.location.href 没有权限 解决方法
2008/08/05 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
js字符串转成JSON
2013/11/07 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
微信小程序实现人脸识别
2018/05/25 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Django基础之Model操作步骤(介绍)
2017/05/27 Python
python的变量与赋值详细分析
2017/11/08 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
python实现猜拳小游戏
2020/04/05 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
入党推优材料
2014/06/02 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
承租经营合作者协议书
2014/10/01 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
OpenCV实现普通阈值
2021/11/17 Java/Android
win10更新失败无限重启解决方法
2022/04/19 数码科技