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

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

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

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

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

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

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

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

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

Так должно быть проблема с локалью. Если я сделаю это:

setenv LANG hu_HU.ISO8859-2

тогда это все равно неправильно:

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

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

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

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

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

csh:

setenv LANG hu_HU.UTF-8 

баш / ш:

LANG=hu_HU.UTF-8 
export LANG

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

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

Это также решило проблему, когда я вхожу в систему из окна 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». (Он находится в разделе Edit connection / Advanced / Environment / SCP / Shell / Directory Listing)

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