2015-09-11 2 views
2

Привет
Я использую узел JS для своего приложения, и я хочу печатать символы ascii в терминале.
Here - таблица для символов ascii. Проверьте поле Расширенные коды ASCII. Я хочу напечатать квадрат или круг, например 178 или 219.node JS console log ascii symbol


Может ли кто-нибудь сказать мне, как это сделать?
Спасибо

+0

Я попытался напечатать их, как в html-коде. console.log ("&178;"); – Gor

+0

И я не могу найти способ сделать это – Gor

ответ

6

Как и ряд других языков, Javascript страдает от UTF-16 проклятья. За исключением того, что Javascript имеет еще худшую форму, The UCS-2 Curse. Такие вещи, как charCodeAt и fromCharCode, когда-либо имеют дело с 16-разрядными величинами, а не с реальными 21-разрядными кодами Unicode. Следовательно, если вы хотите распечатать что-то вроде U + 1D49C, MATHEMATICAL SCRIPT CAPITAL A, вам нужно указать не один символ , а два «единицы char»: «\ uD835 \ uDC9C».

Пожалуйста, обратитесь к этой ссылке: https://dheeb.files.wordpress.com/2011/07/gbu.pdf

Ваш нужный символ не для печати ASCII символов. В Linux вы можете распечатать все печатаемые символы ASCII, выполнив команду:

for((i=32;i<=127;i++)) do printf \\$(printf '%03o\t' "$i"); done;printf "\n" 

или

man ascii 

Так что вы можете сделать, это печать символов Юникода. Ниже приведен список всех доступных символов Юникода, и вы можете выбрать тот, который выглядит почти идентично вашему желаемому персонажу.

http://unicode-table.com/en/#2764

Я проверил на терминале окна, но он все еще не показывает нужный символ, но он работает на Linux. Если он все еще не работает, вам необходимо установить LANGUAGE="en_US.UTF-8" в /etc/rc.conf и LANG="en_US.UTF-8" в /etc/locale.conf.

Так распечатывания что-то вроде этого на узле консоли:

console.log('\u2592 start typing...'); 

будет выводить этот результат:

▒ start typing... 
+0

Отлично. Спасибо. – Gor

+0

OP специально спросил о символах ASCII. 178 + 219 - оба печатаемых символа ASCII, и они работают без каких-либо проблем в Windows.UTF-8/UTF-16 - это, конечно, совершенно другая проблема. –

1

На самом деле, если вы заботитесь только о ASCII, которые не должны быть реальной проблемой на всех , Вы только должным образом побег их. Хорошая ссылка на это https://mathiasbynens.be/notes/javascript-escapes

console.log('\xB2 \xDB') 

работает для меня с recentish узла под Windows (CMD Shell) и Mac OS. Для символов ASCII вы можете просто преобразовать их в hex и добавить их в \x в свои строки. Попробуйте с node -e "console.log('\xB2')"