Несколько вопросов о кодировке символов файловой системы на Linux

Я могу решить, по крайней мере, часть проблемы: почему stop часть не работает. Экспериментально, когда Вы запускаете Экранную сессию в отдельном режиме (screen -d -m), никакое окно не выбрано, таким образом, вводит позже отправленный с screen -X stuff просто потерян. Необходимо явно указать, что Вы хотите отправить нажатия клавиш в окно 0 (-p 0). Это - хорошая идея так или иначе, в случае, если Вы, оказывается, создаете другие окна на той Экранной сессии по любой причине.

screen -S minecraft -p 0 -X stuff "stop^M"

(Экран переводит ^M управлять-M, который является символом, отправленным клавишей Enter.)

Проблема с запуском сессии из сценария, вероятно, связана с unMENU.

12
07.07.2019, 03:20
4 ответа

Я повторно сформулировал Ваши вопросы немного по причинам, которые должны казаться очевидными, когда Вы читаете их в последовательности.

1. Действительно ли возможно сконфигурировать использование файловой системы Linux зафиксированная кодировка символов для хранения имен файлов независимо от среды LANG/LC_ALL?

Нет, это не возможно: как Вы упоминаете в своем вопросе, имя файла UNIX является просто последовательностью байтов; ядро ничего не знает о кодировании, который полностью пространство пользователя (т.е. прикладной уровень) понятие.

Другими словами, ядро ничего не знает о LANG/LC_*, таким образом, это не может перевести.

2. Действительно ли возможно позволить различным именам файлов относиться к тому же файлу?

У Вас может быть несколько записей каталога, относящихся к тому же файлу; можно сделать это через жесткие ссылки или символьные ссылки.

Знайте, однако, что имена файлов, которые не допустимы в текущем кодировании (например, Ваша символьная строка GBK, когда Вы работаете в локали UTF-8) отобразятся плохо, если вообще.

3. Действительно ли возможно исправить ядро для перевода кодировки символов между файловой системой и текущей средой?

Вы не можете исправить ядро, чтобы сделать это (см. 1.), но Вы могли - в теории - исправляют библиотеку C (например, glibc), чтобы выполнить этот перевод и всегда преобразовывать имена файлов в UTF-8, когда это называет ядро, и преобразуйте их назад в текущее кодирование, когда это читает имя файла из ядра.

Более простой подход мог быть должен записать файловую систему наложения с FUSE, который просто перенаправляет любой запрос к файловой системе к другому местоположению после преобразования имени файла к/от UTF-8. Идеально Вы могли смонтировать эту файловую систему в ~/trans, и когда доступ сделан ~/trans/a/GBK/encoded/path затем файловая система FUSE действительно доступы /a/UTF-8/encoded/path.

Однако проблема с этими подходами: что Вы делаете с файлами, которые уже существуют в Вашей файловой системе и не являются закодированным UTF-8? Вы не можете просто передать их непереведенный, потому что затем Вы не знаете, как преобразовать их; Вы не можете исказить их путем перевода последовательностей недопустимого символа в ? потому что это могло создать конфликты...

8
27.01.2020, 19:56
  • 1
    Такая файловая система наложения существует: Convmvfs. –  Gilles 'SO- stop being evil' 23.06.2011, 02:52

То, что можно сделать, ограничить сумму поддерживаемых локалей только к локалям UTF-8.

http://www.fifi.org/cgi-bin/man2html/usr/share/man/man5/locale.gen.5

1
27.01.2020, 19:56
  • 1
    Лично, я желаю, чтобы был только 1 набор символов, кодирующий (UTF-8) в мире, но существует унаследованное приложение, все еще работающее, и совместимость между Windows и Linux должна быть достигнута, большинство людей должно столкнуться с этим кошмаром. –  LiuYan 刘研 22.06.2011, 21:38

Выбор кодовой страницы OEM не работает как в vanilla unzip, так и в vanilla p7zip. Я сделал патчи , устраняющие эту проблему, и есть ppa для Ubuntu с p7zip с этим патчем.

1
16.07.2020, 10:42

Эта проблема с zip-файлами была исправлена ​​в самой последней диспетчере файлов и архивов far2l . Чтобы определение устаревшей кодировки zip с помощью far2l работало правильно, языковые настройки вашей системы должны совпадать с теми, которые установлены в системе, в которой был создан архив (. Внутренний инструмент Windows для работы с папками zip использует точно такую ​​же логику ). Также вы можете сделать

LANG=zh_CN.UTF-8 far2l
0
11.10.2020, 16:55

Теги

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