Javascript Nodejs:内容编码错误
我有以下Node.js代码:Javascript Nodejs:内容编码错误,javascript,string,node.js,Javascript,String,Node.js,我有以下Node.js代码: var net = require('net'); var sys=require('sys'); var reqHash={}; var resHash={}; var server = net.createServer( function(soc){ soc.on('data', function(data){ //sys.puts(data); var requestData=data; var conn = net.Soc
var net = require('net');
var sys=require('sys');
var reqHash={};
var resHash={};
var server = net.createServer( function(soc){
soc.on('data', function(data){
//sys.puts(data);
var requestData=data;
var conn = net.Socket();
conn.connect(80,"www.xlhi.com",function(){
conn.write(data);
});
conn.on("connect",function(){
//sys.puts("connected");
});
conn.on("data",function(x){
var responseData=x.toString();
//sys.puts(responseData);
var f=50;
var toTransmit="";
if(responseData!=undefined){
var N=responseData.length;
if(N>f){
var p=Math.floor(N/f);
var p_rem=N%f;
var hash="";
var chunk="";
for(var i=0;i<p;i++){
chunk=responseData.substr(f*i,f);
hash=DJBHash(chunk);
toTransmit+=chunk;
if(hash<0){
hash=hash*-1;
}
if(resHash[hash]!=undefined){
//sys.puts("***Hit"+resHash[hash]);
//toTransmit=toTransmit+"***EOH"+hash+"EOH***";
}else{
resHash[hash]=chunk;
//toTransmit+=chunk;
}
}
//remainder:
//toTransmit+="***";
//sys.puts(f*p+" "+p_rem);
chunk=responseData.substr(f*p);
//sys.puts("EOH"+chunk+"\n");
hash=DJBHash(chunk);
toTransmit+=chunk;
}else{
toTransmit=responseData;
}
//sys.puts(x.toString().substr(0,50));
//sys.puts(toTransmit.substr(0,50));
sys.puts(toTransmit);
sys.puts(x);
soc.write(toTransmit); /*This line causes content encoding error!*/
}
});
});
});
server.on('error', function (err){
// Error processing i just pass whole object
console.log(err);
});
server.listen(8080,"172.16.1.218");
console.log('Server is listening %d\n', 8080);
function DJBHash(str) {
var hash = 5381;
for(var i = 0; i < str.length; i++) {
hash = (((hash << 5) + hash) + str.charCodeAt(i)) & 0xffffffff;
}
return hash;
}
var net=require('net');
var sys=需要('sys');
var reqHash={};
var resHash={};
var server=net.createServer(函数(soc){
soc.on(数据),功能(数据){
//系统输出(数据);
var requestData=数据;
var conn=net.Socket();
conn.connect(80,“www.xlhi.com”,函数(){
连接写入(数据);
});
conn.on(“连接”,功能(){
//系统看跌期权(“已连接”);
});
连接开关(“数据”,功能(x){
var responseData=x.toString();
//系统看跌期权(响应数据);
var f=50;
var toTransmit=“”;
如果(响应数据!=未定义){
var N=响应数据长度;
如果(N>f){
var p=数学楼层(N/f);
var p_rem=N%f;
var hash=“”;
var chunk=“”;
对于(var i=0;i,根据文件:
response.write
接受字符串或缓冲区。如果是字符串,它也接受编码,默认编码是utf-8
因此,编码问题来自这样一个事实:您给他一个UTF-8格式的字符串,并且您的浏览器设置为另一种编码
在这段代码中,你也不会写任何标题,浏览器必须猜测你发送给他的是text/plain
还是text/html
。你使用的是什么版本的节点?非常感谢你的回复。我正在使用v0.4.10我现在已经弄明白了…soc.write(新缓冲区(toTransmit))