ホームページ  >  記事  >  ウェブフロントエンド  >  Node.jsファイルのエンコード形式変換方法まとめ

Node.jsファイルのエンコード形式変換方法まとめ

php中世界最好的语言
php中世界最好的语言オリジナル
2018-06-01 17:41:041775ブラウズ

今回は、Node.jsファイルのエンコード形式変換方法の概要と、Node.jsファイルのエンコード形式を変換する際の注意点について、実際のケースを見てみましょう。

プロジェクトには UTF-8 形式ではない Lua ファイルが多数あり、EditPlus を使用して表示すると、ASCII として表示されます。以前にも書きましたが、BOM 付きのものもありますが、これには一定のルールがあります。

ASCII エンコードは面倒です。オンライン リソースを検索し、テストと比較を繰り返した結果、最終的に次のより信頼性の高い方法を思いつきました (一部の EditPlus ではエンコードが utf-8 であると示されていますが、node.js ライブラリは他のものを返します)。エンコーディング>_< ;)

変更が正しいかどうかを判断するには、変更後に SVN 経由で送信し、送信リストを参照して、送信するファイルをダブルクリックし、以下のダイアログ ボックスが表示された場合のみ必要です。変更が成功したことを意味し、それ以外はすべて表示されます 中国語になると文字化けします

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);

上記の判断に注意してください。 1つ目がGB2312またはASCIIの場合は、対応するエンコードを直接変換してください。 utf-8にします。そして返された形式が の場合、まず PC の下に改行があるかどうかを判断し、改行がある場合はすべて GBK として処理します。

全体のアイデアは実際には比較的単純です。難しいのは、ファイルのエンコード形式を判断することです。これは本当に難しいです>_

この記事の事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

Vue2.0を使ってカメラを呼び出して写真を撮る方法


vue-baidu-mapを作成してページに入り、自動的に配置する方法

以上がNode.jsファイルのエンコード形式変換方法まとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。