Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RingoJS未打印unicode字符_Javascript_Windows_Unicode_Cygwin_Ringojs - Fatal编程技术网

Javascript RingoJS未打印unicode字符

Javascript RingoJS未打印unicode字符,javascript,windows,unicode,cygwin,ringojs,Javascript,Windows,Unicode,Cygwin,Ringojs,我无法让Ringo.JS打印unicode字符。我的运行时环境是cygwin。我把它归结为一行程序,如下所示,展示了这个问题。cat表示我的终端能够显示unicode文本,但ringo不能。我想知道ringo shell脚本是否以一种不符合unicode的方式执行,但我对执行shell的方式并不熟练。更不用说了解为什么某些方法可能支持或不支持unicode了 有没有办法让ringo在cygwin中正确打印unicode $ cat unicodeTest.js print( "αλφα" );

我无法让Ringo.JS打印unicode字符。我的运行时环境是cygwin。我把它归结为一行程序,如下所示,展示了这个问题。cat表示我的终端能够显示unicode文本,但ringo不能。我想知道ringo shell脚本是否以一种不符合unicode的方式执行,但我对执行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 c.f.fs.readFile vs.fs.readFileSync的阻塞I/O版本,因此您可以选择适合您需要的I/O模型。

一般来说,只使用ASCII码更安全。如果您需要字符串文字或正则表达式中的非ASCII字符,例如“\u03B1\u03BB\u03C6\u03B1”。Ringo假设控制台支持UTF-8流IO,这在除Windows之外的任何地方都很常见。让Windows控制台从除Win32 API以外的任何应用程序打印Unicode都是非常痛苦的,通常最好避免。@MathiasBynens虽然您在技术上是正确的,但转义字符串是不可理解的,我不知道“\u03B1\u03BB\u03C6\u03B1”是没有引用表的αλφα。不可理解的代码实际上是不可维护的,因此转义字符串并不能真正扩展到应用程序。@LeeJenkins您可以使用一个transpiler,它使用一个库将字符串文本转换为转义形式,作为构建步骤的一部分。