我无法让Ringo.JS打印unicode字符。我的运行时环境是cygwin。我把它归结为一个展示问题的单线程序(见下文)。 cat
表示我的终端能够显示unicode文本,但是ringo没有。我想知道“ringo”shell脚本是否以某种方式以非unicode符合的方式执行,但我不熟悉exec
- shell的方式。更不知道为什么某些方法可能有也可能没有unicode支持。
有没有办法让ringo在cygwin中正确打印unicode? p>
$ cat unicodeTest.js
print( "αλφα" );
console.log( "αλφα" );
$ ringo unicodeTest.js
αλφα
αλφα
$ ringo --version
RingoJS version 0.10
$ which ringo
/cygdrive/c/bin/ringojs-0.10/bin/ringo
更新:
出于好奇,我尝试将输出重定向到文件并进行检查。在我的终端中运行ringo的方式肯定有问题,因为终端可以正确打印unicode和ringo进程unicode,但是ringo不会在终端中打印unicode。有谁知道可能导致这种情况的原因?
$ ringo unicodeTest.js > output.text
αλφα
$ cat output.text
αλφα
更新#2:
似乎没有构建用于Windows的ringo来支持控制台I / O中的utf8。但是,node.js可以工作。我切换到另一台运行不同版本Windows的机器,得到了类似的结果。
$ cat utf8test.js
console.log( "καίρε, κόσμε" );
$ ringo utf8test.js
και��ε, κο�σμε
$ node utf8test.js
καίρε, κόσμε
所以底线,如果你想编写一个JavaScript程序在windows中的控制台上执行utf8,那么解决方案是使用node.js而不是ringojs。 node.js开发人员添加了许多API的阻塞I / O版本(c.f. fs.readFile与fs.readFileSync),因此您可以选择适合您需求的I / O模型。