Node.js的stdout编码问题
我做了一个快速的Ajax驱动的页面来粘贴一些文本并运行yuicompressor。 输出工作的很好,但是,当我发送标准输出回到我的网页,我有关于在<
字符切断数据的问题。 例如,当我运行这个压缩机时:
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') } }); }
看起来你的难处在于,你告诉jQuery使用一段JavaScript代码作为HTML,并且在第一个HTML元字符“ <
”处切断。 pre
标签的内容仍然是HTML,只是空白的处理方式不同。 调用$('pre').text(data)
,你应该没问题。