2014-10-14 1 views
3

У меня есть репозиторий, который содержит мою .bashrc и, следовательно, следующее содержание:мерзавец преобразует символы, такие как ✓ и ✗ для подчеркивания (_)

... 
PROMPT_DIRTY=" \[\033[1;31m\]✗\[\033[0m\]" 
PROMPT_CLEAN=" \[\033[1;32m\]✓\[\033[0m\]" 
... 

Если я клонировать этот репозиторий на качестве распределения I Archlinux получить именно этот (выше) вывод. Но если я клонировать репо на Debian (пробовал несколько версий) или FreeBSD 10,0, то я получаю следующее сообщение:

... 
PROMPT_DIRTY=" \[\033[1;31m\]_\[\033[0m\]" 
PROMPT_CLEAN=" \[\033[1;32m\]_\[\033[0m\]" 
... 

Т.е. специальные символы ✓ и ✗ преобразуются в символ подчеркивания (_).

Кто-нибудь знает, почему это происходит? Я хотел бы иметь оригинальные специальные символы, отличные от алфавитно-цифровых, вместо подчеркивания.

+5

Посмотрите на файл в шестнадцатеричном редакторе. Возможно, персонажи все еще остаются, но выбранный шрифт во второй системе не поддерживает символ? Или, возможно, это проблема ISO/UTF. – IQAndreas

+0

@IQAndreas: Спасибо за ваш комментарий. Шестигранный редактор был отличной идеей. Шестнадцатеричные данные в текстовых файлах одинаковы. Таким образом, используемая кодировка символов должна быть проблемой. – sebokopter

ответ

2

Я использовал tmux для просмотра файла .bashrc. Проблема, связанная с tmux отключенной поддержкой UTF-8.

Согласно man-странице, tmux пытается угадать поддержку UTF-8, посмотрев переменные среды LC_ALL, LC_CTYPE и LANG для строки «UTF-8». Вы можете принудительно включить поддержку tmux UTF-8 аргументом «-u».

Похоже, что в моем случае tmux догадался неправильно, но моя переменная среды LANG была установлена ​​в локаль UTF-8. Поэтому tmux не распознал строку «UTF-8», но после того, как я вызвал tmux с флагом «-u» и, следовательно, принудительно поддерживал поддержку UTF-8, все выглядит так, как ожидалось.

Благодаря @IQAndreas для указания на решение.

+1

Рад, что я могу помочь. Вы можете объяснить в своем ответе, что делает флаг '-u' (или, по крайней мере, четко указывать, что является источником проблемы). – IQAndreas

Смежные вопросы