Node.js设置编码的问题

4
如果我运行下面的代码,并取消注释“setEncoding”行,则会收到以下错误信息:
/usr/local/test-server/test.js:78
res.setEncoding('utf8');

    ^

类型错误:对象#没有“setEncoding”方法

如果不加这行代码,所有的东西都能按预期工作——除了浏览器抱怨未声明的字符编码。

在文档、SO、GitHub问题列表或广泛的谷歌搜索中都没有找到有用的信息。node.js版本是最新的:0.8.6

var https = require('https');
var sslPrivateKey = fs.readFileSync('./pk.pem');
var sslCert = fs.readFileSync('./cert.pem');
var sslOpts = { key: sslPrivateKey, cert: sslCert };

var server = https.createServer(sslOpts, function(req, res) {

    if ('GET' === req.method) {

        res.writeHead(200, {'Content-Type': 'text/plain','charset': 'utf8'});
        //res.setEncoding('utf8');
        res.write('You are here' + "\n");
        res.end();

    } 

}

server.listen(8080);
2个回答

8

http.ServerResponse 没有 setEncoding 方法。您试图设置头信息 'charset',但是 'charset' 是 'Content-Type' 头的一部分。请尝试以下方法:

res.writeHead(200, {'Content-Type': 'text/plain; charset=utf8'});

记住,这只是客户了解如何解释内容的信息,而不是规则。

0
对于在TypeScript中遇到相同问题的任何人,你应该使用type https.ClientRequest而不是Request。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接