Nodejs中讀取中文文件編碼問題、發(fā)送郵件和定時(shí)任務(wù)實(shí)例
關(guān)于nodejs讀取中文文件真是折騰了不少時(shí)間,網(wǎng)上各種方案,最后沒有一個(gè)適用我,好在解決了。
下面的三個(gè)知識(shí)點(diǎn)都是從項(xiàng)目中抽出的,要單獨(dú)運(yùn)行腳本的話需要用全局模式來安裝模塊,比如安裝中文轉(zhuǎn)換模塊(后續(xù)其它的也需要這么做):

npm install -g iconv-lite
npm install -g nodemailer
npm install -g node-schedule
1、nodejs讀取中文文件編碼問題
準(zhǔn)備一個(gè)文本文件(當(dāng)然也可以是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);
直接讀文件的話是亂碼,不信你可以試試。需要先統(tǒng)一用二進(jìn)制編碼方式讀取,然后再用GBK解碼。運(yùn)行結(jié)果如下:

更多參見:iconv-lite
2、nodejs發(fā)送郵件
啥都不想說,直接上代碼,簡單易懂:
var nodemailer = require('nodemailer');
//配置郵件
var transporter = nodemailer.createTransport('SMTP',{
service: '163qiye',
auth: {
user: 'zhoujie0111@126.com',
pass: '123456',
}
});
//發(fā)送郵件
var sendmail = function(html){
var option = {
from:"zhoujie0111@126.com",
to:"zhoujie0111@126.com,zhoujie0111@126.com",
cc:'zhoujie0111@126.com'
}
option.subject = '我5年前制定的五年計(jì)劃'
option.html= html;
transporter.sendMail(option, function(error, response){
if(error){
console.log("fail: " + error);
}else{
console.log("success: " + response.message);
}
});
}
//調(diào)用發(fā)送郵件
sendmail("郵件內(nèi)容:<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定時(shí)任務(wù)
這個(gè)用法很多,如果熟悉linux crontab語法,這個(gè)就更簡單了。我鄒的這個(gè)例子很和諧,呵呵:
var schedule = require('node-schedule');
/*方式一:
指定某一個(gè)時(shí)間執(zhí)行任務(wù)
*/
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.');
});
/*方式二:
在每個(gè)小時(shí)的多少分鐘執(zhí)行
*/
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 下午茶!');
});
運(yùn)行結(jié)果更和諧,呵呵:

不要奇怪為什么第一個(gè)計(jì)劃任務(wù)沒有執(zhí)行,因?yàn)檫@個(gè)是格林威治時(shí)間,它需要等8個(gè)小時(shí)后再執(zhí)行。呵呵~~
更多參見:node-schedule
聽了一天的悲傷的音樂,越聽越開心。哈哈
相關(guān)文章
NodeJS前端自動(dòng)化部署實(shí)現(xiàn)實(shí)例詳解
這篇文章主要為大家介紹了NodeJS前端自動(dòng)化部署實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
node.js調(diào)用Chrome瀏覽器打開鏈接地址的方法
其實(shí)在Node.JS中打開瀏覽器網(wǎng)址非常簡單,但還是有必要整理下分享給有需要的朋友們,這篇文章主要給大家介紹了node.js如何調(diào)用Chrome瀏覽器打開鏈接地址的方法,文中介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起看看吧。2017-05-05
Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件
這篇文章主要介紹了Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件及node.js遞歸刪除非空文件夾的實(shí)例代碼,需要的朋友可以參考下2018-03-03
iPhone手機(jī)上搭建nodejs服務(wù)器步驟方法
這篇文章主要介紹了iPhone手機(jī)上搭建nodejs服務(wù)器步驟方法,本文給出了詳細(xì)的操作步驟以及操作命令,需要的朋友可以參考下2015-07-07
讓nodeJS支持ES6的詞法----babel的安裝和使用方法
這篇文章主要介紹了讓nodeJS支持ES6的詞法----babel的安裝和使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Node.js創(chuàng)建子進(jìn)程的幾種實(shí)現(xiàn)方式
這篇文章主要介紹了Node.js創(chuàng)建子進(jìn)程的幾種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10

