RingoJS не печатает символы Юникода

У меня проблемы с тем, чтобы Ringo.JS печатал символы Юникода. Моя среда выполнения Cygwin. Я свел его к однострочной программе (см. Ниже), которая демонстрирует проблему. cat указывает, что мой терминал способен отображать текст в кодировке Unicode, а ринг - нет. Мне интересно, если сценарий оболочки "ringo" каким-то образом выполняется не-Unicode-совместимым способом, но я не бегло в способах execснаряды гораздо меньше в знании, почему некоторые методы могут иметь или не иметь поддержку юникода.

Есть ли способ заставить ринго правильно печатать юникод в cygwin?

$ 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:

Похоже, что Ringo для Windows не построен для поддержки UTF8 в консоли ввода-вывода. Тем не менее, node.js работает. Я переключился на другую машину с другой версией Windows и получил похожие результаты.

$ cat utf8test.js
console.log( "καίρε, κόσμε" );
$ ringo utf8test.js
και��ε, κο�σμε
$ node utf8test.js
καίρε, κόσμε

Итак, суть в том, что если вы хотите написать программу на JavaScript для выполнения utf8 на консоли в Windows, тогда решение состоит в том, чтобы использовать node.js, а не ringojs. Разработчики node.js добавили блокирующие версии ввода / вывода для многих API (см. Fs.readFile и fs.readFileSync), поэтому вы можете выбрать модель ввода / вывода, соответствующую вашим потребностям.

0 ответов

Другие вопросы по тегам