Dieses Mal werde ich Ihnen einige Vorsichtsmaßnahmen zur Verwendung von Node.js zum Konvertieren von Dateikodierungsformaten und zur Verwendung von Node.js zum Konvertieren von Dateikodierungsformaten vorstellen. Im Folgenden sind praktische Fälle aufgeführt. , lass uns einen Blick darauf werfen.
ASCII-Kodierung ist eine Nervensäge. Nach der Suche nach Online-Ressourcen, wiederholten Tests und Vergleichen bin ich schließlich auf die folgende zuverlässigere Methode gekommen (einige EditPlus-Anzeigekodierungen sind utf-8, aber die node.js-Bibliothek). gibt etwas anderes zurück.
Um festzustellen, ob die Änderung korrekt ist, müssen Sie sie nach der Änderung nur über SVN einreichen, die Übermittlungsliste durchsuchen und auf eine beliebige zu übermittelnde Datei doppelklicken Das in der Abbildung unten gezeigte Dialogfeld wird angezeigt. Dies bedeutet, dass die Änderung erfolgreich war. Andere werden sehen, dass der chinesische Text verstümmelt wurde.
var fs = require('fs'); var chardet = require('chardet'); var jschardet = require("jschardet"); var encoding = require("encoding"); var path = "lua目录"; function readDirectory(dirPath) { if (fs.existsSync(dirPath)) { var files = fs.readdirSync(dirPath); files.forEach(function (file) { var filePath = dirPath + "/" + file; var stats = fs.statSync(filePath); if (stats.isDirectory()) { // console.log('/n读取目录:\n', filePath, "\n"); readDirectory(filePath); } else if (stats.isFile() && /\.lua$/.test(filePath)) { var buff = fs.readFileSync(filePath); if (buff.length && buff[0].toString(16).toLowerCase() == "ef" && buff[1].toString(16).toLowerCase() == "bb" && buff[2].toString(16).toLowerCase() == "bf") { //EF BB BF 239 187 191 console.log('\n发现BOM文件:', filePath, "\n"); buff = buff.slice(3); fs.writeFile(filePath, buff.toString(), "utf8"); } // { encoding: 'UTF-8', confidence: 0.99 } // var charset = chardet.detectFileSync(filePath); var info = jschardet.detect(buff); if (info.encoding == "GB2312" || info.encoding == "ascii") { var resultBuffer = encoding.convert(buff, "UTF-8", info.encoding); fs.writeFile(filePath, resultBuffer, "utf8"); } else if (info.encoding != "UTF-8" && chardet.detectFileSync(filePath) != "UTF-8") { if (buff.toString().indexOf("\r\n") > -1) { var resultBuffer = encoding.convert(buff, "UTF-8", "GBK"); fs.writeFile(filePath, resultBuffer, "utf8"); } } } }); } else { console.log('Not Found Path : ', dirPath); } } readDirectory(path);
Beachten Sie das oben Gesagte Wenn das erste eindeutig GB2312 oder ASCII ist, ändern Sie die entsprechende Konvertierungskodierung direkt in utf-8. Und wenn das zurückgegebene Format lautet, stellen Sie zunächst fest, ob sich unter dem PC ein Zeilenumbruchzeichen befindet, und behandeln Sie in diesem Fall alles als GBK für die Verarbeitung.
Die ganze Idee ist eigentlich relativ einfach. Die Schwierigkeit liegt in der Bestimmung des Dateikodierungsformats. Das ist wirklich schwierig>_ Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben Informationen, bitte beachten Sie andere verwandte Artikel auf der chinesischen PHP-Website! Empfohlene Lektüre: Drei integrierte Objekte für das Lernen zur grundlegenden Verbesserung von js Grundlegende Datentypen für die grundlegende Verbesserung von js Lernen Das obige ist der detaillierte Inhalt vonVerwenden von Node.js zum Konvertieren von Dateikodierungsformaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!