resumo:
Recentemente, encontrei um problema quando estava fazendo o manual 'Código de documentos'. Depois de verificar o arquivo, descobri que a codificação do arquivo estava errada, com mais de 100 arquivos no total. Se eu salvá -lo como UTF8 com o editor, seria triste. Por isso, escrevi um programa para me modificar o formato de codificação de arquivos.
Código:
A cópia do código é a seguinte:
/**
* Modifique o formato de codificação de arquivo, por exemplo: GBK para UTF8
* Suporta diretório de vários níveis
* @param {string} [root_path] [caminho do arquivo que precisa ser transcodificado]
* @param {Array} [File_Type] [Formato de arquivo que requer transcodificação, como o arquivo html]
* @param {string} [de_code] [codificação de arquivo]
* @param {string} [to_code] [codificação do alvo do arquivo]
*/
// Introduce pacote
var fs = requer ('fs'),
iconv = requer ('iconv-lite');
// variáveis globais
var root_path = './html',
file_type = ['html', 'htm'],
de_code = 'gbk',
to_code = 'utf8';
/**
* Determinar se o elemento está na matriz
* @Date 2015-01-13
* @param {[string]} elem [elemento que está sendo procurado]
* @return {[bool]} [descrição]
*/
Array.prototype.inArray = function (elem) {
"Use rigoroso";
var L = this.length;
while (l--) {
if (este [l] === elem) {
retornar true;
}
}
retornar falso;
};
/**
* Função de transcodificação
* @Date 2015-01-13
* @param {[string]} root [diretório de arquivos codificado]
* @return {[type]} [Descrição]
*/
Função Encodefiles (root) {
"Use rigoroso";
var arquivos var = fs.readdirSync (root);
files.foreach (function (arquivo) {
var pathname = arquivo root + '/' +,
stat = fs.lstatsync (pathname);
if (! stat.isdirectory ()) {
var name = file.toString ();
if (! file_type.inArray (name.substring (name.lastindexof ('.') + 1))) {
retornar;
}
Fs.WriteFile (Pathname, iconv.decode (fs.readfilesync (PathName), From_code), {
Codificação: to_code
}, function (err) {
if (err) {
lança err;
}
});
} outro {
Encodfiles (PathName);
}
});
}
Encodefiles (root_path);
resumo:
O programa acima suporta diretórios de vários níveis e o mesmo arquivo não pode ser operado várias vezes, caso contrário, o código ilegal aparecerá novamente.
O código completo: https://github.com/baixuexiyang/coding, você pode gastar na sua conta. Se houver algum bug, entre em contato com ele em questão.
Não é muito bom? Espero que gostem. Se você tiver alguma dúvida, deixe uma mensagem.