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 31 NodeJs
NodeJS url验证(url-valid)的使用方法
Nov 18 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
配置nodejs环境的方法
May 13 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php使用GeoIP库实例
2014/06/27 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
js里的prototype使用示例
2010/11/19 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
python的类方法和静态方法
2014/12/13 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
Python线程之定位与销毁的实现
2019/02/17 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
python 实现Harris角点检测算法
2020/12/11 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
不错的求职信范文
2014/07/20 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
靠谱准确的求职信
2019/04/02 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
js不常见操作运算符总结
2021/11/20 Javascript
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
Redis基本数据类型String常用操作命令
2022/06/01 Redis