Назад | Перейти на главную страницу

Как узнать, поддерживает ли терминал UTF-8

Я настраиваю модуль CPAN для Perl на CentOs 5, и один из вопросов: «Поддерживает ли ваш терминал UTF-8?» (перефразировано). Как мне узнать?

Введите это в свой терминал:

echo -e '\xe2\x82\xac' 

Если ваш терминал поддерживает UTF-8, он выведет знак евро:

На самом деле, самый верный способ протестировать - скачать текстовый файл и введите его в терминал и посмотрите, все ли в порядке.

или, если можете, перекомпилируйте терминал, включив опцию unicode (при условии, что она есть).

как выглядят $ TERM и $ LANG?

Самый хромой способ: запустить следующее и проверить вывод. Это будет заглавная O с циркумфлексом, если терминал отображает UTF-8.

perl -le 'print "\x{c3}\x{94}"'

Самый верный способ - использовать команду «locale». Он распечатает все различные переменные, которые определяют, какой набор символов использовать. Например, это мой вывод на RHEL5.3, по умолчанию настроен только на использование UTF-8.

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

Вы можете просто использовать следующую команду:

locale charmap
curl http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

или

wget -O - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

Это, очевидно, требует wget или curl.

UTF=$(echo -e "\u263A")
if [[ ! "$UTF" =~ "A" ]]  ; then
 echo -n "UNICODE here!"
fi