Как я могу отображать символы расширенных кодов ASCII в Perl? - PullRequest
5 голосов
/ 20 сентября 2010

alt text

Как отобразить символ 192 символов (└) в perl?

Ответы [ 4 ]

11 голосов
/ 20 сентября 2010

То, что вы хотите, чтобы иметь возможность печатать Unicode, и ответ в perldoc perluniintro.

Вы можете использовать \x{nnnn}, где n - шестнадцатеричный идентификатор, илиможно сделать \N{...} с именем:

perl -E 'say "\x{2514}"; use charnames; say "\N{BOX DRAWINGS LIGHT UP AND RIGHT}"'
8 голосов
/ 20 сентября 2010

Чтобы использовать именно эти коды, ваш терминал должен поддерживать Кодовую страницу 437 , которая содержит кадры. В качестве альтернативы вы можете использовать производное CP850 с меньшим количеством символов бокса. Такие символы бокса также существуют как Блочные элементы Unicode . Символ, который вы хотите в Perl, отмечен как \N{U+2514}. Подробнее в perlunicode

5 голосов
/ 20 сентября 2010

Это похоже на кодировку страницы 437.Perl, вероятно, просто выводит байты, которые вы ему даете.И ваш терминал, вероятно, ожидает UTF8.

Так что вам нужно декодировать его в Unicode, а затем перекодировать в UTF-8.

EDIT: правильное кодирование.

3 голосов
/ 20 сентября 2010

Как обычно, Джон Скит прибивает это: код 192 находится в диапазоне " extended ASCII ".Я предлагаю вам следовать @ совету Дугласа Лидера , но я не уверен, какую кодировку дает вам www.LookupTables.com;ISO-8859-1 считает, что 192 отображается на "А", а Mac OS Roman считает его "" ".

...