The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск файлового менеджера Midnight Commander 4.8.31"
Отправлено WatchCat, 05-Фев-24 22:10 
>Я имел в вижу непереключение с koi8-r на utf8 своей учётной записи. Даже не помню где конкретно >это переключается

К сожалению - переключается более чем в одном месте.

Переменными LC_* переключается системная locale - то есть то чем пользуются например сишные функции, определяющие "печатность" символа. Если прикладная программа написана так что полагается на это то может не выводить русские буквы если посчитает их "непечатными символами". Далеко не все программы используют эту настройку. Например тот же МС,запущенные в xterm, свято уверен что
символы с кодами больше 127 являются "непечатными". Что интересно, в "голой" консоли он так не считает. Вот кусочек кода который надо править чтобы избавиться от этого эффекта в версии до 4.8.13. В более новых - не помогает так как там настолько усердно прикручивали юникод что работу с "однобайтными" терминалом поломали где-то еще. Сходу найти у меня тогда не получилось,а потом стало лень так как никакой практической потребности в новых версиях МС у меня просто нет. Так последней не сломаной и пользуюсь уже десяток лет.

Вот эта фраза "Full 8 bits output" doesn't work on xterm" - это ЛОЖЬ. Во всяком случае применительно к тем версиям xterm которые поставляются в дистрибутивах линукса последние лет двадцать. Но конечно надо правильно xterm настроить чтобы он у него full 8 bits output работал.

--- a/lib/util.c        2014-09-04 11:39:18.000000000 +0400
+++ b/lib/util.c        2015-02-10 20:50:53.000000000 +0300
@@ -98,10 +98,11 @@
is_8bit_printable (unsigned char c)
{
     /* "Full 8 bits output" doesn't work on xterm */
-    if (mc_global.tty.xterm_flag)
+/*    if (mc_global.tty.xterm_flag)
         return is_iso_printable (c);

-    return (c > 31 && c != 127 && c != 155);
+        return (c > 31 && c != 127 && c != 155);*/
+    return (c > 31);
}

Но с переменными LC_* надо быть осторожным,а то можно внезапно получить например запятую в качестве десятичного разделителя вместо классической в программировании точки и огрести от этого множество глюков типа нечитаемости файлов в формате csv например.

Отдельно настраивается раскладка клавиатуры. Хотя если это терминал внутри Иксов то там проще так как он получает не коды русских букв,а иксовые "события" от клавиатуры и уже сам переделывает их в коды русских букв. Сами "события" универсальны, а xterm при перекодировке на locale ориентируется,только не на "общесистемную",а на специальную "иксовую". Вот как раз в ней и нет поддержки cp866,с чем мне и пришлось бороться когда-то.

И отдельно настраивается какой шрифт должен загрузить xterm (или что там у вас в качестве терминала). Понятно что расположение русских букв в шрифте должно совпадать с кодировкой того что выводится на экран.  Некоторые иксовые программы умеют сами выбирать шрифт из доступных в Иксах,ориентируясь на его полное имя,в котором может быть(а может и не) имя кодировки.

Мне не известен штатный общесистемный способ посмотреть какими шрифтами пользуется программа. Поэтому был найден старинный кусочек кода еще из 90х, который компилируется в разделяемую библиотеку и подгружается перед программой через LD_SO_PRELOAD. Вот он печатает в stdout имя шрифта который запрашивает программа. В процессе экспериментов когда-то узнал много нового и интересного об использовании программами иксовых шрифтов.

Кстати, свой комплект любимых шрифтов можно не пихать в системные каталоги Иксов и не бояться что при очередном обновлении они будут прибиты пакетным менеджером. Их можно держать в домашнем каталоге и поключать при старте Иксов с помощью xset. У меня так шрифты для 866 кодировки подключены и еще пара штук периодически нужных - имитатор рукописного текста и шрифт для вырезания трафаретов(оба используются при выводе на печать,а не на экран).

Однако что мне нравится в Линуксе - это возможность таки настроить себе _привычные_ удобства,даже
если они весьма далеки от дефолтных настроек,предлагаемых в дистрибутиве. Да, разбирательство с настройками может быть достаточно сложным но делается это один раз,а потом можно таскать за собой свой домашний каталог с привычными настройками много лет с одной машины на другую малозависимо от версии установленного дистрибутива. В отличие от некоторых других очень популярных ОС,где после установки надо всё заново с нуля настраивать. Да еще сама система обожает по своему усмотрению настройки в реестре переписывать.

И еще есть любопытный вопрос - как там у wayland с работой в однобайтных кодировках? Пока вроде не актуально,как и сам wayland, но вдруг когда-то Иксы из дистрибутива выкинуть попытаются.

>В общем в терминале мне все эти utf не требуются

Вот я тоже не слишком понимаю зачем нужен utf в терминале. Как раз именно там от него проблем куда больше чем пользы.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру