nodejs編碼只支持utf8的編碼方式,無論是打開某個文件或者寫.js腳本都得以utf8的編碼方式保存,不然程序無法運行,讀出來的文件是亂碼。
如果是在前台,讀取文件是通過FileReader或者FileReaderSync這兩個webAPI和input[type='file']標簽來配合來完成,但是這個兩個API已經包涵了判斷文件的編碼方式的功能,無論是GBK還是utf8編碼的文件都能正確打開不出現亂碼,但是nodejs就會出現這樣的問題,讀取gbk和unicode編碼的文件出現奇怪的亂碼,有一個模塊iconv-lite可以解決搜信編碼問題,但是前提是你得知道這個文件的編碼方式,舉個例子:
有一個gkb的文件叫gbk.txt正確查看它的方式如下:
var icon=require('iconv-lite');
var fs=require('fs'改漏備)
fs.readFile('gbk.txt',function(err,buffer){
var str=iconv.decode(buffer,'gbk')
console.log(str)//得到無亂碼的內容
})
但是如果不知道文件的編碼方式,那有該怎麼辦呢?
那就來聊一聊編碼方式,首先UNICODE編碼,UNICODE編碼的文件無論核毀內容是什麼,前兩個位元組要不是FF FE 或者 FE FF,
utf-8頭兩個位元組是EF BB,至於gbk吧,目前我沒找到判斷方法,只能粗略的判斷如果不是unicode和utf8就認為是GBK,
代碼如下:
var fs=require('fs')
fs.readFile('code.txt',function(err,buffer){
if(buffer[0]==0xff&&buffer[1]==0xfe){
console.log('unicode')
}else if(buffer[0]==0xfe&&buffer[1]==0xff){
console.log('unicode')
}else if(buffer[0]==0xef&&buffer[1]==0xbb){
console.log('utf8')
}else{
console.log('else')
}
})
㈡ js 創建並編輯文件
需要先下載安裝nodejs;即伺服器端的js,語法和瀏覽器端的一樣,
write.js
varfs=require("fs");
vardata='我是新寫入的內容';
//創建一個可以寫入的流,寫入到文件output.txt中
varwriterStream=fs.createWriteStream('output.txt');
//使用utf8編碼寫入數據
writerStream.write(data,'UTF8');
//標記文件末尾
writerStream.end();
//處理流事件-->data,end,anderror
writerStream.on('finish',function(){
console.log("寫入完成。");
});
writerStream.on('error',function(err){
console.log(err.stack);
});
console.log("程序執行完畢");
打開cmd,cd到當前目錄,node main
文件就創建寫入了。
下面這種方法,只支持老版本的ie瀏覽器ie8及以下;
varfso,f1,f2,s;
fso=newActiveXObject("Scripting.FileSystemObject");
f1=fso.CreateTextFile("c:\testfile.txt",true);
//寫一行
f1.Write("Thisisatest.");
//關閉文件
f1.Close();
//獲取C:根目錄下的文件句柄
f2=fso.GetFile("c:\testfile.txt");
//移動文件到 mp目錄下
f2.Move("c:\tmp\testfile.txt");
//拷貝文件到 emp目錄下
f2.Copy("c:\temp\testfile.txt");
//獲取文件句柄
f2=fso.GetFile("c:\tmp\testfile.txt");
f3=fso.GetFile("c:\temp\testfile.txt");
//刪除文件
f2.Delete();
f3.Delete();
㈢ javaScript在桌面建立個txt文件如何完成。
先說明下,不是 javascript 哦。javascript 是不可能在桌面上生成文件的。
要創建文件使用的是 nodejs,示例代碼如下版:
varfs=require('fs');
console.log('准備寫入權文件');
//當寫入的文件不存在時,會自動創建
fs.writeFile('new.txt','通過writeFile寫入的內容!',function(err){
if(err){
returnconsole.error(err);
}
console.log('數據寫入成功');
console.log('--------分割線--------');
console.log('讀取寫入的數據');
fs.readFile('new.txt',function(err,data){
if(err){
returnconsole.error(err);
}
console.log('非同步讀取文件數據:'+data);
});
});
㈣ win7下 怎麼通過運行命令行快速啟動nodejs
把你需要執行的命令語句寫成批處理腳本,就能快速啟動了:先創建一個txt文本文件,然後在裡面寫上要執行的語句,然後把文件後綴改成bat。
設置環境變數,在我的電腦郵件,屬性,高級,環境變數,path中最後一句追加上你node安裝的路徑,這樣就可以在任意方式打開cmd,調用nodejs了