resumen:
Recientemente, encontré un problema cuando estaba haciendo el "código de documento" manual. Después de verificar el archivo, descubrí que la codificación del archivo era incorrecta, con más de 100 archivos en total. Si lo guardo como UTF8 con el editor, sería triste. Así que escribí un programa para modificar el formato de codificación del archivo.
Código:
La copia del código es la siguiente:
/**
* Modificar el formato de codificación del archivo, por ejemplo: GBK a UTF8
* Admite directorio de niveles múltiples
* @param {string} [root_path] [ruta de archivo que debe ser transcodificada]
* @param {array} [file_type] [formato de archivo que requiere transcodificación, como el archivo html]
* @param {string} [from_code] [codificación de archivo]
* @param {string} [to_code] [codificación de destino del archivo]
*/
// Introducir el paquete
var fs = require ('fs'),
iconv = require ('iconv-lite');
// variables globales
var root_path = './html',
file_type = ['html', 'htm'],
from_code = 'gbk',
to_code = 'utf8';
/**
* Determinar si el elemento está en la matriz
* @Date 2015-01-13
* @param {[string]} Elem [Elemento está buscando]
* @return {[bool]} [descripción]
*/
Array.prototype.inArray = function (elem) {
"Use estricto";
var l = this.length;
mientras (l--) {
if (this [l] === Elem) {
devolver verdadero;
}
}
devolver falso;
};
/**
* Función de transcodificación
* @Date 2015-01-13
* @param {[string]} root [directorio de archivos codificado]
* @return {[type]} [Descripción]
*/
función codeDefiles (root) {
"Use estricto";
archivos var = fs.ReadDirsync (root);
files.ForEach (function (archivo) {
var rathName = root + '/' + archivo,
stat = fs.lstatSync (rathName);
if (! stat.isDirectory ()) {
var name = file.ToString ();
if (! file_type.inArray (name.substring (name.lastIndexof ('.') + 1))) {
devolver;
}
Fs.WriteFile (PathName, Iconv.Decode (fs.ReadFileSync (PathName), from_code), {
Codificación: TO_CODE
}, function (err) {
if (err) {
tirar err;
}
});
} demás {
EncodeFiles (PathName);
}
});
}
EncodeFiles (root_path);
resumen:
El programa anterior admite directorios de varios niveles, y el mismo archivo no se puede operar varias veces, de lo contrario, el código confuso aparecerá nuevamente.
El código completo: https://github.com/baixuexiyang/coding, puede desembolsarlo en su cuenta. Si hay algún error, comuníquese con él sobre el tema.
¿No es muy bueno? Espero que te guste. Si tiene alguna pregunta, deje un mensaje.