Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung der Konvertierungsmethoden für das Dateikodierungsformat von Node.js

Zusammenfassung der Konvertierungsmethoden für das Dateikodierungsformat von Node.js

php中世界最好的语言
php中世界最好的语言Original
2018-06-01 17:41:041775Durchsuche

Dieses Mal bringe ich Ihnen eine Zusammenfassung der Konvertierungsmethoden für das Dateikodierungsformat von Node.js und die Vorsichtsmaßnahmen für die Konvertierung des Dateikodierungsformats von Node.js. Im Folgenden finden Sie praktische Fälle , einer Steh auf und schau es dir an.

Es gibt viele Lua-Dateien in Projekten, die nicht im UTF-8-Format vorliegen. Bei der Anzeige mit EditPlus werden sie als ASCII angezeigt. Es gibt auch einige mit Stücklisten, die einfacher zu handhaben sind, darüber habe ich bereits geschrieben, und es gibt bestimmte Regeln.

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>_

Hinweis: Die mit der oben genannten Methode geänderten Dateien stimmen mit der Liste der benötigten Dateien überein auf dem Mac eingereicht werden soll. Zumindest löst es das Problem, das ich derzeit habe. Wenn es etwas Besonderes gibt, können Sie den obigen Code ändern.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Wie man mit Vue2.0 die Kamera zum Fotografieren aufruft

Wie man Vue erstellt -baidu-map Rufen Sie die Seite auf, um

automatisch zu finden

Das obige ist der detaillierte Inhalt vonZusammenfassung der Konvertierungsmethoden für das Dateikodierungsformat von Node.js. 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