javascript批量修改文件編碼格式的方法
本文實(shí)例講述了javascript批量修改文件編碼格式的方法。分享給大家供大家參考。具體如下:
摘要:
最近在制作手冊(cè)的時(shí)候遇到了一個(gè)問題'文檔亂碼',查看文件之后發(fā)現(xiàn)文件編碼不對(duì),總共100多個(gè)文件,如果用編輯器另存為utf8,那就悲催了。所以自己就寫了個(gè)程序,批量修改文件編碼格式。
代碼:
* 修改文件編碼格式,例如:GBK轉(zhuǎn)UTF8
* 支持多級(jí)目錄
* @param {String} [root_path] [需要進(jìn)行轉(zhuǎn)碼的文件路徑]
* @param {Array} [file_type] [需要進(jìn)行轉(zhuǎn)碼的文件格式,比如html文件]
* @param {String} [from_code] [文件的編碼]
* @param {String} [to_code] [文件的目標(biāo)編碼]
*/
// 引入包
var fs = require('fs'),
iconv = require('iconv-lite');
// 全局變量
var root_path = './html',
file_type = ['html', 'htm'],
from_code = 'GBK',
to_code = 'UTF8';
/**
* 判斷元素是否在數(shù)組內(nèi)
* @date 2015-01-13
* @param {[String]} elem [被查找的元素]
* @return {[bool]} [description]
*/
Array.prototype.inarray = function(elem) {
"use strict";
var l = this.length;
while (l--) {
if (this[l] === elem) {
return true;
}
}
return false;
};
/**
* 轉(zhuǎn)碼函數(shù)
* @date 2015-01-13
* @param {[String]} root [編碼文件目錄]
* @return {[type]} [description]
*/
function encodeFiles(root) {
"use strict";
var files = fs.readdirSync(root);
files.forEach(function(file) {
var pathname = root + '/' + file,
stat = fs.lstatSync(pathname);
if (!stat.isDirectory()) {
var name = file.toString();
if (!file_type.inarray(name.substring(name.lastIndexOf('.') + 1))) {
return;
}
fs.writeFile(pathname, iconv.decode(fs.readFileSync(pathname), from_code), {
encoding: to_code
}, function(err) {
if (err) {
throw err;
}
});
} else {
encodeFiles(pathname);
}
});
}
encodeFiles(root_path);
小結(jié):
上面的程序支持多級(jí)目錄,同一個(gè)文件不能進(jìn)行多次操作,否則又會(huì)出現(xiàn)亂碼。
完整代碼可點(diǎn)擊此處本站下載。
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- 用javascript實(shí)現(xiàn)點(diǎn)擊鏈接彈出"圖片另存為"而不是直接打開
- JavaScript基于Ajax實(shí)現(xiàn)不刷新在網(wǎng)頁(yè)上動(dòng)態(tài)顯示文件內(nèi)容
- javascript實(shí)現(xiàn)限制上傳文件大小
- javascript結(jié)合ajax讀取txt文件內(nèi)容
- Javascript判斷文件是否存在(客戶端/服務(wù)器端)
- JavaScript判斷文件上傳類型的方法
- 用javascript讀取xml文件讀取節(jié)點(diǎn)數(shù)據(jù)
- JavaScript實(shí)現(xiàn)控制打開文件另存為對(duì)話框的方法
相關(guān)文章
Object的相關(guān)方法 和 js遍歷對(duì)象的常用方法總結(jié)
這篇文章主要介紹了Object的相關(guān)方法 和 js遍歷對(duì)象的常用方法,結(jié)合實(shí)例形式總結(jié)分析了Object對(duì)象操作的操作方法與js遍歷的三種常用方法,需要的朋友可以參考下2023-05-05JavaScript中的location、history、navigator對(duì)象實(shí)例介紹
這篇文章主要介紹了JavaScript中的location、history、navigator對(duì)象實(shí)例介紹,需要的朋友可以參考下2023-05-05javascript實(shí)現(xiàn)仿銀行密碼輸入框效果的代碼
這篇文章通過實(shí)例代碼給大家介紹了javascript實(shí)現(xiàn)仿銀行密碼輸入框效果,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2007-12-12JavaScript?中的?parseInt()?函數(shù)詳解
parseInt函數(shù)將其第一個(gè)參數(shù)轉(zhuǎn)換為一個(gè)字符串,對(duì)該字符串進(jìn)行解析,然后返回一個(gè)整數(shù)或?NaN,這篇文章主要介紹了JavaScript?的?parseInt()?函數(shù),需要的朋友可以參考下2023-05-05js輪播圖透明度切換(帶上下頁(yè)和底部圓點(diǎn)切換)
本篇文章主要介紹了js輪播圖透明度切換(帶上下頁(yè)和底部圓點(diǎn)切換)的實(shí)例。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04