Как отображать расширенные символы ASCII в терминале с помощью nodejs

Согласно На этом сайте расширенные коды символов ASCII 176, 177 и 178 соответствуют трем символам, состоящим из прямоугольников разных оттенков:

символы

Вот подробнее персонаж 178:

персонаж

Теперь, согласно https://mathiasbynens.be/notes/javascript-escapes, я должен иметь возможность экранировать любой ASCII-символ с кодом ниже 256, например, с помощью его шестнадцатеричной escape-последовательности. Итак, 176 будет \xB0 в шестнадцатеричном формате. Но вместо получения ожидаемого символа, как описано выше, я получаю «символ степени» '°'. Символ степени - 248 ASCII, а не 176, так что .... что я делаю не так?


person jotadepicas    schedule 02.07.2017    source источник
comment
Ключевым моментом является IBM разработала расширение 8-битного кода ASCII, которое называется кодовой страницей 437. Это одно из многих расширений. kunststube.net/encoding   -  person Bergi    schedule 03.07.2017


Ответы (2)


JavaScript использует Unicode, а не расширенный ASCII. Вы можете найти Unicode-эквивалент символов ASCII, используя String.prototype.charCodeAt (), а затем вывести их с помощью String.prototype.fromCharCode ():

console.log("░".charCodeAt(0)); // 9617
console.log("▒".charCodeAt(0)); // 9618
console.log("▓".charCodeAt(0)); // 9619

console.log(String.fromCharCode(9617)); // ░
console.log(String.fromCharCode(9618)); // ▒
console.log(String.fromCharCode(9619)); // ▓

Надеюсь это поможет! :)

person Obsidian Age    schedule 02.07.2017
comment
Спасибо! Меня смутило, что в mathiasbynens.be/notes/javascript-escapes#hexadecimal написано Любой символ с кодом символа ниже 256 (т. Е. Любой символ в расширенном диапазоне ASCII) может быть экранирован, используя его шестнадцатеричный код символа. Ключевым моментом здесь является код символа, который относится к кодам символов Unicode, а не ASCII ... Я пропустил это. - person jotadepicas; 03.07.2017
comment
Имейте в виду, что String.fromCharCode (x) не будет работать для расширенного ascii, поскольку Unicode совместим до 127 первых символов (на 7 битах). Например, String.fromCharCode (232) выдаст 'è' как unicode, но это 'Φ' в расширенном ascii - person Stéphane; 20.08.2019

JavaScript работает с Unicode, а не с расширенным ASCII.

U + 00B0 - это символ степени

Элементы блока занимают позиции с 2580 по 259F

console.log("\u2592");

person Quentin    schedule 02.07.2017