1

Ringo.JS で Unicode 文字を印刷するのに問題があります。私の実行環境は cygwin です。問題を示す 1 行のプログラム (以下を参照) に要約しました。はcat、端末が Unicode テキストを表示できることを示していますが、ringo は表示できません。「ringo」シェルスクリプトがどういうわけか非ユニコード準拠の方法で実行されているのではないかと思っていますが、execシェルの方法に精通していません。ましてや、一部のメソッドが Unicode をサポートしている場合とサポートしていない場合がある理由を知る必要はありません。

cygwin で ringo に 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

アップデート:

好奇心から、出力をファイルにリダイレクトしてチェックしてみました。端末は Unicode を出力でき、ringo は Unicode を正しく処理できますが、ringo は端末で Unicode を出力しないため、私の端末での ringo の実行方法には間違いなく問題があります。誰がこれを引き起こす可能性があるか知っていますか?

$ 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 のコンソールで utf8 を実行する JavaScript プログラムを作成する場合、解決策は ringojs ではなく node.js を使用することです。node.js 開発者は、多くの API のブロッキング I/O バージョンを追加したため (fs.readFile と fs.readFileSync を参照)、ニーズに合った I/O モデルを選択できます。

4

0 に答える 0