краткое содержание:
Недавно я столкнулся с проблемой, когда делал ручный «код документа». После проверки файла я обнаружил, что кодирование файла было неправильно, в общей сложности более 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';
/**
* Определите, находится ли элемент в массиве
* @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 (root) {
«Использовать строго»;
var files = fs.readdirsync (root);
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, вы можете разобраться в своей учетной записи. Если есть ошибка, пожалуйста, свяжитесь с ней по этому вопросу.
Разве это не очень хорошо? Надеюсь, вам понравится. Если у вас есть какие -либо вопросы, оставьте сообщение.