ملخص:
في الآونة الأخيرة ، واجهت مشكلة عندما كنت أقوم بعمل "رمز المستند" اليدوي. بعد التحقق من الملف ، وجدت أن ترميز الملف كان خطأ ، مع إجمالي أكثر من 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 [العنصر الذي يتم البحث عنه]
* regurn {[bool]} [الوصف]
*/
Array.Prototype.Inarray = function (elem) {
"استخدام صارم" ؛
var l = this.length ؛
بينما (l--) {
إذا (هذا [l] === elem) {
العودة صحيح.
}
}
العودة كاذبة
} ؛
/**
* وظيفة الترميز
* date 2015-01-13
* param {[string]} root [دليل الملف المشفر]
* regurn {[type]} [الوصف]
*/
وظيفة الترميز (الجذر) {
"استخدام صارم" ؛
ملفات var = fs.readdirsync (الجذر) ؛
files.foreach (function (file) {
var pathname = file 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
} ، وظيفة (خطأ) {
إذا (خطأ) {
رمي الخطأ
}
}) ؛
} آخر {
الترميز (اسم المسار) ؛
}
}) ؛
}
encodefiles (root_path) ؛
ملخص:
يدعم البرنامج أعلاه الدلائل متعددة المستويات ، ولا يمكن تشغيل الملف نفسه عدة مرات ، وإلا فإن التعليمات البرمجية المشوهة ستظهر مرة أخرى.
الرمز الكامل: https://github.com/baixuexiyang/coding ، يمكنك أن تتفوق على حسابك. إذا كان هناك أي خطأ ، فيرجى الاتصال به بشأن المشكلة.
أليس هذا جيد جدا؟ أتمنى أن تعجبك. إذا كان لديك أي أسئلة ، فاترك رسالة.