สรุป:
เมื่อเร็ว ๆ นี้ฉันพบปัญหาเมื่อฉันสร้าง 'เอกสารเอกสาร' ด้วยตนเอง หลังจากตรวจสอบไฟล์ฉันพบว่าการเข้ารหัสไฟล์นั้นไม่ถูกต้องโดยมีไฟล์ทั้งหมดมากกว่า 100 ไฟล์ ถ้าฉันบันทึกเป็น UTF8 ด้วยบรรณาธิการมันคงจะเศร้า ดังนั้นฉันจึงเขียนโปรแกรมด้วยตัวเองเพื่อแก้ไขรูปแบบการเข้ารหัสไฟล์
รหัส:
การคัดลอกรหัสมีดังนี้:
-
* แก้ไขรูปแบบการเข้ารหัสไฟล์ตัวอย่างเช่น: GBK เป็น UTF8
* รองรับไดเรกทอรีหลายระดับ
* @param {string} [root_path] [พา ธ ไฟล์ที่ต้องถูกแปลงรหัส]
* @param {array} [file_type] [รูปแบบไฟล์ที่ต้องใช้การแปลงรหัสเช่นไฟล์ HTML]
* @param {string} [from_code] [การเข้ารหัสไฟล์]
* @param {string} [to_code] [การเข้ารหัสเป้าหมายของไฟล์]
-
// แนะนำแพ็คเกจ
var fs = ต้องการ ('fs')
ICONV = ต้องการ ('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;
ในขณะที่ (l--) {
ถ้า (นี่ [l] === elem) {
กลับมาจริง;
-
-
กลับเท็จ;
-
-
* ฟังก์ชั่นการแปลงรหัส
* @date 2015-01-13
* @param {[String]} root [ไดเรกทอรีไฟล์ที่เข้ารหัส]
* @return {[type]} [คำอธิบาย]
-
ฟังก์ชัน ENCODEFILES (รูท) {
"ใช้เข้มงวด";
var files = fs.readdirsync (root);
files.foreach (ฟังก์ชั่น (ไฟล์) {
var pathName = root + '/' + ไฟล์
stat = fs.lstatsync (ชื่อพา ธ );
if (! stat.isdirectory ()) {
var name = file.toString ();
if (! file_type.inarray (name.substring (name.lastindexof ('.') + 1))) {
กลับ;
-
fs.writefile (ชื่อพา ธ , iconv.decode (fs.readfilesync (ชื่อพา ธ ), จาก _code), {
การเข้ารหัส: to_code
}, ฟังก์ชัน (err) {
ถ้า (err) {
โยนเอ่อ;
-
-
} อื่น {
ENCODEFILES (ชื่อพา ธ );
-
-
-
encodefiles (root_path);
สรุป:
โปรแกรมข้างต้นรองรับไดเรกทอรีหลายระดับและไฟล์เดียวกันไม่สามารถทำงานได้หลายครั้งมิฉะนั้นรหัสที่อ่านไม่ออกจะปรากฏขึ้นอีกครั้ง
รหัสที่สมบูรณ์: https://github.com/baixuexiyang/coding คุณสามารถแยกไปยังบัญชีของคุณได้ หากมีข้อผิดพลาดใด ๆ โปรดติดต่อในปัญหา
มันไม่ดีมากเหรอ? ฉันหวังว่าคุณจะชอบมัน หากคุณมีคำถามใด ๆ ให้ฝากข้อความไว้