요약:
최근에 저는 '문서 코드'매뉴얼을 만들 때 문제가 발생했습니다. 파일을 확인한 후 파일 인코딩이 잘못되었으며 총 100 개가 넘는 파일이 있습니다. 편집자와 UTF8로 저장하면 슬픈 일입니다. 그래서 나는 파일 인코딩 형식을 수정하기 위해 직접 프로그램을 작성했습니다.
암호:
코드 사본은 다음과 같습니다.
/**
* 파일 인코딩 형식 수정 (예 : gbk to utf8)
* 다중 레벨 디렉토리를 지원합니다
* @param {string} [root_path] [트랜스 코딩 해야하는 파일 경로]]
* @param {array} [file_type] [html 파일과 같은 트랜스 코딩이 필요한 파일 형식]
* @param {string} [from_code] [파일 인코딩]
* @param {string} [to_code] [파일의 대상 인코딩]
*/
// 패키지를 소개합니다
var fs = 요구 ( 'fs'),
iconv = require ( 'iconv-lite');
// 글로벌 변수
var root_path = './html',
file_type = [ 'html', 'htm'],
from_code = 'gbk',
to_code = 'utf8';
/**
* 요소가 배열에 있는지 확인하십시오
* @Date 2015-01-13
* @param {[string]} elem [요소를 찾아야합니다]
* @return {[bool]} [설명]
*/
Array.prototype.inarray = function (elem) {
"엄격한 사용";
var l = this.length;
while (l--) {
if (this [l] === elem) {
진실을 반환하십시오.
}
}
거짓을 반환합니다.
};
/**
* 트랜스 코딩 함수
* @Date 2015-01-13
* @param {[string]} root [인코딩 된 파일 디렉토리]
* @return {[type]} [설명]
*/
함수 encodefiles (루트) {
"엄격한 사용";
var files = fs.ReadDirsync (루트);
files.foreach (function (file) {
var pathname = root + '/' + 파일,
stat = fs.lstatsync (pathname);
if (! stat.isdirectory ()) {
var name = file.toString ();
if (! file_type.inarray (name.substring (name.lastindexof ( '.') + 1))) {
반품;
}
fs.writefile (pathname, iconv.decode (fs.readfilesync (pathname), from_code), {
인코딩 : to_code
}, function (err) {
if (err) {
오류를 던지십시오.
}
});
} 또 다른 {
EncodeFiles (PathName);
}
});
}
EncodeFiles (root_path);
요약:
위의 프로그램은 다단계 디렉토리를 지원하며 동일한 파일을 여러 번 작동 할 수 없으며 그렇지 않으면 차량 코드가 다시 나타납니다.
완전한 코드 : https://github.com/baixuexiyang/coding, 계정으로 포크 할 수 있습니다. 버그가 있으면 문제에 대해 버그에 문의하십시오.
아주 좋지 않습니까? 나는 당신이 그것을 좋아하기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨주세요.