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

Как сделать "меньше" дескриптора команды UTF-8?

На моем терминале Mac печать UTF-8 в целом работает, но less не работает правильно.

Итак, это работает правильно:

$  echo -e '\xe2\x82\xac'   
€

но подключение к меньшему дает что-то вроде этого:

$  echo -e '\xe2\x82\xac' | less  
<E2><82><AC>

Как это исправить?

Для диагностики:

Я использую Mac OS 10.6.8. менее версия 418, Терминал 2.1.2 (273.1).

Результат моей локали таков:

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

Хорошо, я нашел ответ после некоторого поиска в Google. По-видимому, LESSCHARSET нужно установить так:

export LESSCHARSET=utf-8

Сейчас less у меня отлично работает.

Если вы видите символы Юникода в less, но не могут получить less для отображения эмодзи попробуйте обновить less к более свежей версии. В Mac OS X я перешел с версии 458 на 481, и это устранило мою проблему (например, git log теперь может отображать эмодзи в сообщениях фиксации).

Если у вас доморощенный, вы можете реже заменить систему на более новую версию, запустив brew install homebrew/dupes/less.

У меня работает с

LANG=
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="en_US.UTF-8"

Я погуглил и попробовал следующие переменные среды, которые у меня сработали:

export LC_ALL=en_US.UTF-8
export LANG=en_us.UTF-8

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

В любом случае, еще один поиск в Google дал мне это описание переменной:

LC_ALL Эта переменная определяет значения для всех категорий локали. Значение переменной среды LC_ALL имеет приоритет над любыми другими переменными среды, начиная с LC_ (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) и переменной среды LANG.

источник: http://pubs.opengroup.org/onlinepubs/007908799/xbd/envvar.html

Это заставляет меня думать, что это языковая переменная, которая управляет всеми ими :)

Просто обнови тебя [less][1]

Сделайте это с пивом.

brew install homebrew/core/less