> 웹 프론트엔드 > JS 튜토리얼 > nodejs 일괄 수정 파일 인코딩 format_node.js

nodejs 일괄 수정 파일 인코딩 format_node.js

WBOY
풀어 주다: 2016-05-16 16:18:30
원래의
1511명이 탐색했습니다.

요약:
최근 매뉴얼을 작성하다가 파일을 확인해보니 파일 인코딩이 잘못된 것을 발견했습니다. 총 100개 이상의 파일이 있었습니다. utf8로서 그것은 비극적일 것입니다. 그래서 파일 인코딩 형식을 일괄적으로 수정하는 프로그램을 작성했습니다.

코드:

코드 복사 코드는 다음과 같습니다.

/**
* 파일 인코딩 형식을 수정하세요(예: GBK에서 UTF8로
) * 다중 레벨 디렉토리 지원
* @param {String} [root_path] [트랜스코딩이 필요한 파일 경로]
* @param {Array} [file_type] [html 파일 등 트랜스코딩이 필요한 파일 형식]
* @param {String} [from_code] [파일 인코딩]
* @param {String} [to_code] [파일의 대상 인코딩]
​*/
//패키지 소개
var fs = require('fs'),
iconv = require('iconv-lite');
//전역변수
var root_path = './html',
File_type = ['html', 'htm'],
From_code = 'GBK',
to_code = 'UTF8';
/**
* 요소가 배열에 있는지 확인
* @날짜 2015-01-13
* @param {[String]} elem [찾을 요소]
* @return {[bool]} [설명]
​*/
Array.prototype.inarray = 함수(요소) {
"엄격한 사용";
var l = this.length;
동안 (l--) {
If (this[l] === elem) {
       true를 반환합니다.
}
}
false를 반환합니다.
};
/**
* 트랜스코딩 기능
* @날짜 2015-01-13
* @param {[String]} root [인코딩 파일 디렉터리]
* @return {[유형]} [설명]
​*/
함수 encodeFiles(루트) {
"엄격한 사용";
var 파일 = fs.readdirSync(root);
files.forEach(함수(파일) {
var 경로명 = 루트 '/' 파일,
​​ stat = fs.lstatSync(경로명);
If (!stat.isDirectory()) {
var 이름 = file.toString();
If (!file_type.inarray(name.substring(name.lastIndexOf('.') 1))) {
         반품;
}
            fs.writeFile(경로 이름, iconv.decode(fs.readFileSync(경로 이름), from_code), {
인코딩: to_code
}, 함수(err) {
만약 (오류) {
            오류를 던졌습니다.
}
});
} 그 밖의 {
encodeFiles(경로명);
}
});
}
encodeFiles(root_path);

요약:
위 프로그램은 다중 레벨 디렉토리를 지원하며 동일한 파일을 여러 번 작동할 수 없습니다. 그렇지 않으면 잘못된 문자가 나타납니다.

전체 코드: https://github.com/baixuexiyang/coding, 자신의 계정으로 포크할 수 있습니다. 버그가 있는 경우 문제를 신고해 주세요.

정말 좋지 않나요? 궁금한 점이 있으시면 메시지를 남겨주세요.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿