У меня есть сервер с общим ресурсом 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 и одновременно сохранить языковой стандарт пользователя по умолчанию.