У меня есть сервер с общим ресурсом 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
bash / sh:
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». (Он находится в разделе «Изменить соединение / Advanced / Environment / SCP / Shell / Directory Listing»)
Используя этот параметр, вы сможете использовать WinSCP и одновременно сохранить языковой стандарт пользователя по умолчанию.