1

我无法让 Ringo.JS 打印 unicode 字符。我的运行环境是cygwin。我把它归结为一个显示问题的单行程序(见下文)。表示我的cat终端能够显示 unicode 文本,但 ringo 不能。我想知道“ringo” shell 脚本是否以某种非 unicode 兼容的方式执行,但我不exec熟悉 -ing shell 的方式。更不用说为什么某些方法可能支持或不支持 Unicode。

有没有办法让ringo在cygwin中正确打印unicode?

$ 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
καίρε, κόσμε

所以归根结底,如果你想在 windows 的控制台上编写一个 JavaScript 程序来做 utf8,那么解决方案是使用 node.js 而不是 ringojs。node.js 开发人员添加了许多 API 的阻塞 I/O 版本(参见 fs.readFile 与 fs.readFileSync),因此您可以选择适合您需求的 I/O 模型。

4

0 回答 0