ファイルのセットを読み取り、それらを行に分割し、行を配列に入れるノードアプリを作成しようとしています。ものすごく単純。私が扱っているいくつかのSQLファイルを除いて、かなりの数のファイルで動作します。何らかの理由で、行を分割すると、ある種のユニコード出力が得られるようです。アプリは次のようになります。
fs = require("fs");
var data = fs.readFileSync("test.sql", "utf8");
console.log(data);
lines = data.split("\n");
console.log(lines);
入力ファイルは次のようになります。
use whatever
go
出力は次のようになります。
��use whatever
go
[ '��u\u0000s\u0000e\u0000 \u0000w\u0000h\u0000a\u0000t\u0000e\u0000v\u0000e\u0000r\u0000',
'\u0000g\u0000o\u0000',
'\u0000' ]
ご覧のとおり、ファイルの先頭にある種の認識されない文字があります。データを読み込んで直接出力すると、この文字以外は問題ないように見えます。ただし、それを行に分割しようとすると、これらすべての Unicode のような文字が表示されます。基本的には、それぞれの先頭に「\u0000」が付いたすべての実際の文字です。
ここで何が起こっているのかわかりませんが、ファイル自体の文字に関係があるようです。ファイルのテキストをコピーして別の新しいファイルに貼り付け、新しいファイルでアプリを実行すると、正常に動作します。この問題の原因は、コピーと貼り付けのプロセス中に取り除かれていると思います。