Node.js stdout编码问题

时间:2012-07-19 15:11:53

标签: node.js encoding yui stdout

我已经制作了一个快速的ajax驱动页面,用于粘贴一些文本并运行yuicompressor。输出效果很好,但是,当我将stdout发送回我的页面时,我遇到了<字符处的数据切断问题。例如,当我在此运行压缩器时:

function Enum(values){
    for( var i = 0; i < values.length; ++i ){
        this[values[i]] = i;
    }
    return this;
}

我得到一个压缩版本,没问题。现在,当我将此信息发送到我的页面时:

exec(command, function(err, stdout, stderr) {
    console.log(stdout);
    res.writeHead(200, {'content-type': 'text/plain'});
    //res.write(decodeURIComponent(escape(stdout)));
    //res.write(qs.escape(stdout));
    res.write(stdout);
    res.end('\n');    
});

这始终会导致发送的数据在<处被切断,从而导致:

function Enum(a){for(var b=0;b

console.log(stdout)显示完美,所以直到它被发送到客户端才被切断。

当我尝试编码时,我能够将所有输出到我的页面全部转义出来,但是在前端解码会导致同样的问题斩断。

这是ajax电话:

if(ready) {
    $.ajax('/get' + args + '/', {
        type: 'GET',
        dataType: 'text',
        success: function(data) { $('pre').html(data) },
        error: function() { console.log('error retrieving data') }    
    });
}

1 个答案:

答案 0 :(得分:2)

看起来你的困难在于你告诉jQuery使用一块JavaScript作为HTML,并且它在第一个HTML元字符<处“切断”。 pre标记的内容仍然是HTML,只是对空格的处理方式不同。致电$('pre').text(data),您应该没问题。