1. 程式人生 > >nodejs讀取檔案亂碼問題

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解碼。執行結果如下:



2、nodejs傳送郵件

啥都不想說,直接上程式碼,簡單易懂:

複製程式碼 程式碼如下:
var nodemailer = require('nodemailer');

//配置郵件
var transporter = nodemailer.createTransport('SMTP',{
    service: '163qiye',
    auth: {
        user: '[email protected]',
        pass: '123456',
    }
});

//傳送郵件
var sendmail = function(html){
    var option = {
            from:"[email protected]",
            to:"[email protected],[email protected]", 
            cc:'[email protected]'
        }
    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!");

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 下午茶!');
});

執行結果更和諧,呵呵:

不要奇怪為什麼第一個計劃任務沒有執行,因為這個是格林威治時間,它需要等8個小時後再執行。呵呵~~

相關推薦

nodejs讀取檔案亂碼問題

關於nodejs讀取中文檔案真是折騰了不少時間,網上各種方案,最後沒有一個適用我,好在解決了。下面的三個知識點都是從專案中抽出的,要單獨執行指令碼的話需要用全域性模式來安裝模組,比如安裝中文轉換模組(後續其它的也需要這麼做):複製程式碼 程式碼如下:npm install -

java讀取檔案亂碼

有時候我們讀取檔案的時候切換了utf-8、gbk、gb2312幾種編碼方式,但是還是亂碼,這個時候我們要去檢視一下檔案的編碼方式: 1.在Vim中可以直接檢視檔案編碼 :set fileencoding 2.在subline中檢視檔案編碼 Sublime Text的預設設定是不開啟顯示

MultipartHttpServletRequest,ajaxFileUpload上傳檔案,讀取檔案亂碼問題

@RequestMapping(value = "/uploadOrgid", method = RequestMethod.POST, produces = "text/html;charset=UTF-8") @ResponseBody public String upl

40、使用位元組流讀取檔案亂碼問題

寫出中文 向txt檔案中寫出中文,通過下面程式碼的演示,因為一箇中文佔2個位元組,所以按照位元組寫出中文時會出現亂碼的情況。 package com.sutaoyu.IO; import java.io.FileNotFoundException; import java.io.FileOutpu

FileReader讀取檔案亂碼問題

FileReader fr=new FileReader(new File(filePath)); BufferedReader br = new BufferedReader(fr); 直接使用FileReader讀取一個包含中文字元的檔案,將字元輸入流放到BufferedReade

nodejs檔案讀取中文亂碼問題

參考自《深入淺出nodejs》 Buffer物件類似於陣列,元素為16進位制的兩位數,0-255的數值 是二進位制,與字串有編碼的關係 Buffer物件可以與字串之間相互轉換,目前支援:ASCII,UTF-8,UTF-16LE/UCS-2,Base64,Binary,Hex

Java讀取檔案時第一行出現亂碼“?”問號

我們在使用Java在讀取檔案(txt、dat等)時,如果檔案不是utf-8格式的話,讀取結果會出現,中文字元變亂碼的情況,所以一般在讀取時轉為UTF-8格式讀取。 但這時會出現一種情況,第一次讀取第一行第一個字元時會出現“?”的亂碼這個是java本身編碼格式轉換的問題,可以採用一下方式解決:  

nodejs讀取檔案狀態;fs.stat()方法;

var fs = require("fs"); /*     讀取檔案的狀態;     fs.stat(path,callback);     callback有兩個引數;err,stats;stats是一個fs.Stats物件; &nbs

node.js在讀取檔案時中文亂碼問題

斷更很久了........從今天開始會努力的持續更博,積極學習。 言歸正傳。今天在寫node.js的demo時發現一個bug。我在node中讀取本地的text檔案時,發現英文的內容可以被讀取,但是中文的就顯示的是亂碼。如下圖   產生這種問題的原因是: Windows下預設的編碼格式是AS

Android第二十三課 Java檔案讀取中文亂碼

1 位元組流以及編碼轉換說明 String str = "中"; byte[] b_gbk =str.getBytes("GBK"); byte[] b_utf8 =str.getBytes("UTF-8"); String s_gbk = newString(b_gbk,"GBK"); Str

Java 讀取寫入檔案亂碼問題解決

Java 讀取寫入檔案亂碼問題解決 寫檔案 讀檔案 寫檔案 File f = new File(fileName); if (!f.exists()) {

JAVA本地讀取檔案,解決中文亂碼問題

JAVA本地讀取檔案出現中文亂碼,查閱一個大神的部落格做一下記錄 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Buffered

nodejs簡單的讀取檔案寫存檔案

node.js 讀取檔案 fs 是 file-system 的簡寫,就是檔案系統的意思 在 Node 中如果想要進行檔案操作,就必須引入 fs 這個核心模組 在 fs 這個核心模組中,就提供了所有的檔案操作相關的 API 例如:fs.readFile 就是用

解決生成的saiku檔案讀取中文亂碼的問題

javax.ws.rs.WebApplicationException: org.saiku.service.util.exception.SaikuServiceException: org.saiku.service.util.exception.SaikuServiceException:

NODEJS常用功能(讀取檔案)

準備工作:下載fs檔案模組包,在cmd命令窗體中執行命令 npm install fs -g 安裝檔案操作模組 1.首先建立一個input.txt檔案,檔案內容如下 2.建立input.js檔案,用於讀取input.txt檔案的內容 //讀取檔案 var http = require(

Android讀取檔案時,由byte轉成String字串時出現亂碼

先看看出亂碼的程式碼 public static void getInfo(Context context) { try { FileInputStream

以位元組流讀取檔案時中文亂碼解決(二)

在上一節中說明了每次讀取一個位元組時亂碼解決方法,這一節我將闡述每次讀取多個位元組亂碼的解決。 問題: 中文字元佔2個位元組,非中文佔一個位元組 例如:"abc中國" 當我們以每四個位元組

Springboot--從配置檔案properties讀取字串亂碼

當讀取properties的內容為:發現中文亂碼。原因是由於預設讀取的為ISO-8859-1格式,因此需要切換為UTF-8。 主要方式有如下兩種 方式一 在你的application.properties中增加如下配置,避免中文亂碼 spring.http.en

位元組流讀取檔案防止亂碼

public static StringBuilder reader(String filePath) { try { File file = new File(filePath); if (file.isFile() &

C / C++ 讀取檔案出現亂碼解決方法

  昨天用C語言寫了一下檔案讀取,發現讀出來的全是亂碼。這肯定是文字編碼不同導致的。      據我查證,C語言的漢字編碼方式是由你電腦決定的,所以需要看一下你電腦是什麼編碼,來確定你需要把文字檔案改成什麼編碼。 1.win+R,開啟執行框之後輸入c