我已经完成了一些Google搜索,但是我得到了与编码字符串或文件相关的结果.
我可以用UTF-8 编写我的Node.js JavaScript源代码吗?我可以在注释,字符串或变量名中使用非ASCII字符吗?
ECMA-262似乎需要UTF-16编码,但Node.js不会运行UTF-16编码.js文件.但是,它将运行UTF-8源并正确解释非ASCII字符.
这是设计还是"意外"?是否指定支持UTF-8源代码?
这是我的小代码:
var http = require('http');
var port = 9002;
var host_ip = '<my_ip>';
http.createServer(function (req, res) {
var content = new Buffer("Hello ??", "utf-8")
console.log('request arrived');
res.writeHead(200, {
'Content-Encoding':'utf-8',
'charset' : 'utf-8',
'Content-Length': content.length,
'Content-Type': 'text/plain'});
res.end(content.toString('utf-8'),'utf-8');
}).listen(port, host_ip);
console.log('server running at http://' + host_ip + ':' + port);
Run Code Online (Sandbox Code Playgroud)
以前我只是res.end发送"你好世界",它运作良好.然后我想调整一点,将'世界'改成中文等同的'世界',然后将标题中的'charset''内容类型'改为'utf-8'.但在Chrome和Firefox中我看到了这个:
hello ???
Run Code Online (Sandbox Code Playgroud)
然而,令人惊讶的歌剧(11.61)确实显示了正确的结果hello ??.我想知道我是否错过了代码中的某些内容,以及为什么会发生这种情况.感谢你们.
我认为这篇文章与我的情况类似,但并不完全相同.
码:
var nerve = require("./nerve");
var sitemap = [
["/", function(req, res) {
res.respond("???????");
}]
];
nerve.create(sitemap).listen(8100);
Run Code Online (Sandbox Code Playgroud)
在浏览器中显示:
CAA:89
Run Code Online (Sandbox Code Playgroud)
它应该如何正确?