这次给大家带来的是使用Node.js进行文件编码格式转换,使用Node.js进行文件编码格式转换有哪些注意事项?以下是实际案例。让我们来看看。
ASCII编码更痛苦。通过搜索网上资源,反复测试对比,最终形成以下可靠方法(部分EditPlus显示编码为utf-8,但node.js库返回其他代码>;_ & lt)
要判断修改是否正确,只需要通过SVN提交,浏览提交列表,双击任意要提交的文件即可。如果显示下图对话框,说明修改成功,别人看到的反而是中文乱码。
var fs = require(& # 039;fs & # 039);var chardet = require(& # 039;chardet & # 039);var jschardet = require(& quot;jschardet & quot);var encoding = require(& quot;编码& quot);var path = & quotLua目录";函数read directory(dirPath){ if(fs . exists sync(dirPath)){ var files = fs . readdirsync(dirPath);files . foreach(function(file){ var file path = dirPath+& quot;/& quot;+文件;var stats = fs . statsync(file path);if(stats . is directory()){//console . log(& # 039;/n读取目录:\ \ n & # 039,文件路径,& quot\ \ n & quot);readDirectory(文件路径);} else if(stats . is file()& amp;& amp/\\.lua$/。test(file path)){ var buff = fs . read file sync(file path);if(buff . length & amp;& ampbuff[0]。toString(16)。toLowerCase()= = = & quot;ef & quot& amp& ampbuff[1]。toString(16)。toLowerCase()= = = & quot;bb & quot& amp& ampbuff[2]。toString(16)。toLowerCase()= = = & quot;bf & quot){//EF BB BF 239 187 191 console . log(& # 039;\ \ nBOM文件已找到:& # 039;,文件路径,& quot\ \ n & quot);buff = buff . slice(3);fs.writeFile(filePath,buff.toString(),& quotutf8 & quot);} // {编码:& # 039;ut F-8 & # 039;,置信度:0.99 }//var charset = chardet . detect file sync(file path);var info = jschardet . detect(buff);if(info . encoding = = & quot;GB2312 & quot| | info.encoding = = & quotascii & quot){ var result buffer = encoding . convert(buff,& quotut F-8 & quot;,info . encoding);fs.writeFile(filePath,resultBuffer,& quotutf8 & quot);} else if (info.encoding!= & quotut F-8 & quot;& amp& ampchardet . detect file sync(file path)!= & quotut F-8 & quot;){ if (buff.toString()。的索引(& quot\ \ r \ \ n & quot)& gt-1){ var result buffer = encoding . convert(buff,& quotut F-8 & quot;,& quotGBK & quot;);fs.writeFile(filePath,resultBuffer,& quotutf8 & quot);} } } });} else { console . log(& # 039;找不到路径:& # 039;,dirPath);}}readDirectory(路径);注意以上判断。当第一个明确是GB2312或者ascii的时候,直接把对应的编码转换成utf-8。如果返回的数据是格式的,首先判断PC下是否有换行,如果有,则视为GBK。
整个思路其实挺简单的,难点在于判断文件编码格式。这个真的很难>:_ & lt,获取原始编码格式后,调用encoding.convert(buff,目标编码格式,原始编码格式);可以获得所需的代码。如果有空有兴趣,可以下载Notepad++源代码,看看它是如何判断文件的编码格式的。
相信你看完这个案例已经掌握了方法。更多精彩请关注即时码站其他相关文章!
推荐阅读:
js基础增强学习的三个内置对象
js基础提升学习的基础数据类型
评论前必须登录!
注册