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了