【发布时间】:2011-09-25 08:26:57
【问题描述】:
printargv.js:
console.log(Buffer.byteLength(process.argv[2]));
在 cmd.exe(使用 chcp=65001,font='Lucida Console')中,我运行:
node printargv.js Ā
(注:Ā的unicode码位为U+0100。)脚本输出:
1
我希望脚本打印一个大于 1 的数字,但事实并非如此。有谁知道为什么?
编辑: 在我尝试以下代码后,我认为节点“解析”cmd.exe 的初始参数不正确:
var i = require('readline').createInterface(process.stdin,process.stdout);
i.question('char: ', function(c){
console.log( Buffer.byteLength(c) );
i.close();
process.stdin.destroy();
});
输出为 2
【问题讨论】:
-
@Juhana:问题或多或少是,“为什么它应该打印 2 却打印 1?”。
-
我在 Ubuntu 上使用 UTF-8 在终端中得到 2。如果我输出字符的字符代码,我会得到正确的值(256)。 (尝试输出
process.argv[2].charCodeAt(0)。)我只能假设Lucida Console 存在一些问题(请注意,该页面并未声称支持代码页65001),与大多数字体一样,它对Unicode 的支持不完整。
标签: javascript node.js utf-8