FreeBSD 10.3 + zfs - набор символов неправильно отображается в терминале

У меня есть сервер с общим ресурсом samba в файловой системе zfs. Имена файлов на венгерском языке. Когда я вхожу в систему с помощью ssh, имена файлов отображаются в терминале неправильно:

enter image description here

Если я выполняю автозаполнение для имени файла, тогда становится ясно, что само имя файла хорошее и содержит символы, отличные от ascii:

enter image description here

Я уже пытался установить строку типа терминала на "шпатлевку", изменить набор символов терминала на UTF-8 или ISO-8859-2, но ни один из них не помог.

Та же проблема появляется в Midnight Commander, даже в "строках" неверны:

enter image description here

Если я изменяю отображаемые символы в конфигурации шпатлевки на ISO8859-2:

enter image description here

Тогда, по крайней мере, строчные символы верны, но имена файлов по-прежнему плохие:

enter image description here

Если я запускаю «mc -ac» тогда я вижу тире вместо строк, но имена файлов по-прежнему неправильные:

enter image description here

Значит, проблема с локалью. Если я сделаю это:

setenv LANG hu_HU.ISO8859-2

, тогда это все равно неверно:

enter image description here

Я установил конфигурацию шпатлевки на UTF-8 и LANG на hu_HU.UTF-8, тогда НЕКОТОРЫЕ символы хороши , но не все:

enter image description here

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

Между прочим, правильный префикс имени файла должен быть: "Díjbekér"

1
задан 10 January 2017 в 11:27
1 ответ

Вот правильное решение.

Установите для переменной среды LANG значение hu_HU.UTF-8

csh:

setenv LANG hu_HU.UTF-8 

bash / sh:

LANG=hu_HU.UTF-8 
export LANG

Также установите "терминал" кодирование "в шпатлевке в UTF-8:

enter image description here

Тогда это идеально, как в оболочке, так и в mc:

enter image description here enter image description here

Это также решило проблему, когда я вхожу в систему из окна Linux с помощью xterm / gnome-terminal независимо от того.

Похоже, что общее "общесистемное" решение - создать новый класс в /etc/login.conf с этими:

hungarian|Hungarian:\
    :charset=hu_HU.UTF-8:\
    :lang=hu_HU.UTF-8:\
    :tc=default:

Затем запустить cap_mkdb /etc/login.conf и, наконец, изменить классы входа в систему конкретных пользователей с помощью chsh. (Для новых пользователей лучше всего указать класс входа, когда "adduser" запросит его.)

Все это было задокументировано здесь, за исключением кодировки терминала:

https://www.freebsd.org /doc/handbook/using-localization.html

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

ОБНОВЛЕНИЕ: после этого вы не сможете использовать WinSCP с настройками по умолчанию. WinSCP попытается выполнить «ls -la» на сервере и проанализирует результат. Для неанглийской локали результат будет содержать даты на другом языке, и WinSCP не может это интерпретировать.Чтобы решить эту проблему, перейдите в конфигурацию и измените команду листинга с «ls -la» на «env LANG = en_US.UTF-8 ls -la». (Он находится в разделе «Изменить соединение / Advanced / Environment / SCP / Shell / Directory Listing»)

Используя этот параметр, вы сможете использовать WinSCP и одновременно сохранить языковой стандарт пользователя по умолчанию.

2
ответ дан 3 December 2019 в 20:30

Теги

Похожие вопросы