Heim  >  Artikel  >  WeChat-Applet  >  Verwenden von Node.js zum Konvertieren von Dateikodierungsformaten

Verwenden von Node.js zum Konvertieren von Dateikodierungsformaten

php中世界最好的语言
php中世界最好的语言Original
2018-06-04 15:05:412615Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn