0

我基本上有一些东西,例如:

var escape = function ( x ) {
    if ( ! x ) return '\\N';
    return '"' + x.replace( /\r\n/g, '\n' ) + '"';
};

array.forEach( function ( item ) {
    process.stdout.write( 'foo:' + [ a, b, d ].map( escape ).join( '\t' ) + '\n' );
    item.child.forEach( function ( sub ) {
        process.stdout.write( 'bar:' + [ e, f, g ].map( escape ).join( '\t' ) + '\n' );
    } );
} );

但是,输出文件在明显随机的位置包含字符串,例如:

bar:\N        "1981258"       "Can't Get N^@^@^@^@^@^@^@^@^@^@Her Bones In Thefoo:"1981259" "164264"
bar:\N        ^@ Left"        \N      \N
bar:^@^@^@    \N

这对我来说没有意义,因为程序不应该能够打印任何东西而不将其包装成双引号。

由于这条线,我认为这是一个 Node.js 错误,但我只想知道是否有解决方法。

b^@^@^@^@^@^@^@^@^@x 1 root root 1,5G 17 d\303\251c.  19:14 /D/Release.cs
4

2 回答 2

0

您不必转义 crlf 序列。

$ node
> var crlf = '\n';
undefined
> process.stdout.write( 'foo:' + crlf + 'bar:');
foo:
bar:true
> process.stdout.write( 'foo:' + crlf + 'bar:' + crlf + '\\n' + 'foobar?');
foo:
bar:
\nfoobar?true
>

(两行末尾的“true”是 REPL 中 process.stdout.write 的返回值)也就是说,您能否发布一个带有示例输入和更多代码的要点(我不知道什么 a,b , d, e, f, g,... 参考)。

此外,根据您的输入(并查看您的输出),使用缓冲区而不是原始字符串可能更有意义。

于 2012-12-22T16:07:43.423 回答
0

如果文件被写入(vmhgfs),这可能是与文件系统相关的问题。第二个生成的文件没有这个垃圾。

于 2013-02-15T17:42:15.323 回答