18

Фон:

  • У меня есть несколько символов Юникода в моем приглашении (по сути, маркеры состояния git)
  • Я запускаю urxvt под Xfce на Arch Linux.
  • Я использую шрифт DejaVu Sans Mono для Powerline, указанный с помощью.Линия Xresources:

    URxvt*font: xft:DejaVu Sans Mono for Powerline:pixelsize=14

Когда я запускаю urxvt символы юникода не отображаются правильно.

Например

● отображается как â

Однако, если я тогда запускаю новый urxvt из первого терминала, все отображается правильно.

Там, кажется, нет никакой разницы в окружающей среде между двумя терминалами.

В чем может быть разница между первым вызовом и вложенным вызовом? Я подозреваю, что шрифт неправильный в «внешнем» экземпляре, но я не уверен, как проверить шрифт запущенного окна X

ОБНОВЛЕНИЕ: Кажется, что языковой стандарт неправильно настроен в панели запуска приложения для xfce4, но, вероятно, оболочка внутри первого терминала вводит свою собственную локаль, то есть обе оболочки имеют одинаковую локаль.

добавление

export LANG=en_GB.UTF-8

в .xinitrc до запуска xfce4, кажется, это исправить. Я подозреваю, что это не правильный путь, но он работает достаточно хорошо для меня.

скриншот демонстрирует проблему:

Примечание: я перенес этот вопрос с serverfault.com - надеюсь, этот сайт более уместен

2 ответа2

12

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

  1. Убедитесь, что локаль настроена правильно

    $ locale LANG = en_US.UTF-8 LC_CTYPE = "en_US.UTF-8" LC_NUMERIC = "en_US.UTF-8" LC_TIME = "en_US.UTF-8" LC_COLLATE = "en_US.UTF-8" LC_MONETARY = "en_US. UTF-8 "LC_MESSAGES =" en_US.UTF-8 "LC_PAPER =" en_US.UTF-8 "LC_NAME =" en_US.UTF-8 "LC_ADDRESS =" en_US.UTF-8 "LC_TELEPHONE =" en_US.UTF-8 "LC_MEASUREMENT = "en_US.UTF-8" LC_IDENTIFICATION = "en_US.UTF-8" LC_ALL = en_US.UTF-8
    
  2. Включите нужные локали в /etc/locale.gen и запустите locale-gen

    $ cat /etc/locale.gen | grep UTF en_US.UTF-8 UTF-8 nb_NO.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8
    
  3. Убедитесь, что нужный шрифт может быть загружен

    $ xset +fp /usr /share /fonts /cyrillic $ fc-cache $ fc-list # для проверки
  4. Применить настройки из.Xdefaults (или аналогичные) перед запуском "первого терминала"
    xrdb ~ /.Xdefaults

0

Для меня это была проблема с символами Powerline в urxvt. Только что обнаружил, что установка языкового стандарта с помощью localectl set-locale LANG=en_AU.UTF-8 решает проблему для меня, по крайней мере с шрифтом poweriness terminess (не пробовал другие шрифты)

urxvt powerline символы

Он не работал с en_US.UTF-8 , я уверен, что могу воспроизвести его ... теперь это странно ... но теперь это работает.

источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .