2016-06-10 11 views
0

Ich habe Node.js auf emmbed Linux mit MIPS 24K Little Endian CPU gebaut und ausgeführt. Node.js Version ist v0.12.0. Alles funktioniert gut, außer wenn ich fs.writeFile, Beispielcode:Node.js: seltsames Symbol "^ @" mit fs.writeFile

var fs = require('fs'); 
fs.writeFile("/tmp/test.txt","hello world!",'utf-8', function(err){ 
     if(err){ 
       return console.log(err); 
     } 
     console.log("saved"); 
}); 

vim Mit dieser test.txt zu überprüfen, ist der Inhalt:

^@hello world! 

Offensichtlich gibt es ein undesireable Symbol „^ @ "Am Anfang der geschriebenen Datei.

Also, wie passiert dieses Problem und wie man es löst?

+0

^@ bedeutet, dass es viel mehr Linien gibt, vorzugsweise lange Linien hinter der aktuellen Linie, denke ich. Es gibt nichts, worüber man sich Sorgen machen müsste^@, ich habe es mehrmals in einem großen Skript oder Logfile gesehen. Es ist eine visuelle Darstellung in vim, denke ich. – SibiCoder

+0

Versuchen Sie, den Inhalt einer Datei mit Befehlen wie cat zu drucken. Es werden keine solchen Zeichen angezeigt. – SibiCoder

+0

@SibiCoder Befehl 'cat' zeigt keine solchen Zeichen. Der tatsächliche Inhalt der geschriebenen Datei ist jedoch im JSON-Format, diese Datei wird von anderen verwendet. Ich denke, ich kann es nicht ignorieren – Sunson

Antwort

0

Erste, was zu tun ist, um zu versuchen, die hello world Zeichenfolge Abtippen, kann es sein, dass Sie irgendwie eine NUL oder CTRL- @ Charakter in sie vor dem h eingefügt haben. ECMAScript ermöglicht dies tatsächlich, da NULnicht eines der Zeichen ist, die in einem Zeichenfolgenliteral verboten sind.

Sie könnten dies vorher überprüfen, indem Sie einen Hex-Dump der Quelldatei machen, um zu sehen, welche tatsächlichen Zeichen darin enthalten sind.

+0

Thx für die Antwort. Es ist sehr seltsam, weil die Ausgabedatei in Ordnung ist, wenn die gleiche Quelldatei auf dem PC verwendet wird. Bei der Verwendung von fs.appendFile auf diesem Mips-Board funktioniert es auch gut, deshalb habe ich keine Ahnung, warum fs.writeFile fehlschlägt. – Sunson