1.Чем отличаются kbd и consoletools? Причины перехода(или неперехода) от одной из них к другой(в разных дистрах).
2. В каких случаях драйвер текстового режима определяет, что ему нужно работать в режиме UTF или в байтовом режиме?
3.Что представляет из себя таблица перекодировки символов ACM(Application Charset Map)?
4. Зачем среди четырех таблиц перекодировки ACM в ядре нужны 437 кодовая страница IBM(cp437), таблица для набора символов терминала DEC VT100(vt100)?
5. Консольный драйвер, экранный драйвер, драйвер терминала - синонимы?
6. Если в файл вводятся символы разных языков, то как потом приложение получая последовательности байт с носителя(хард, компакт etc) распознает какие байты в символы какого языка отображать?
7. Что задает переменная LC_LANG в локали? Формат вывода чего?
Общие вопросы русификации и локализации. (Кодировки, раскладки, шрифты, русификация печати.)
Модератор: Bizdelnick
-
alv
- Бывший модератор
- Сообщения: 7275
- Статус: Пенсионер в законе
- ОС: Cintu
Re: Общие вопросы русификации и локализации.
1) именами команд и наборами опций
причины - чисто исторические
2) внутреннее представление символов в Линуксовой консоли - 16-битное, 8-битный режим лишь эмулируется
3) именно это из себя и представляет
4) cp437 обеспечивает адекватный вывод псевдографики; в любом чарсете, таковой предполагающем, символы псевдографики должны быть на тех же местах, что и в cp437
сомневающимся - просьба смотреть на mc при экранном выводе в cp1251 (по предоставлении справки от невропатолога о полной психологической устойчивости)
vt100 - тип терминала, эмулируемый всеми консольными драйверами (не только линуксовым)
5) кроме первого, с остальными не сталкивался; это в переводе? если да, нужно смотреть контекст оригинала
6) приложение никаких языков не распознает; вывод на экран (если это имелось ввиду) осуществляется в соответствие с экранным шрифтом и картой соответствия; язык тут не при чем вообще
7) LC_LANG определяет все остальные локально зависимые переменные, но, в отличие от LC_ALL, не запрещает в переопределить каждую из них отдельно (например, указать вывод сообщений по аглицки для нелюбителей ридной мовы, определить десятичную точку вместо запятой и т.д.)
PS часть из затронутых вопросов освящена здесь:
http://posix.ru/system/linux_console/
причины - чисто исторические
2) внутреннее представление символов в Линуксовой консоли - 16-битное, 8-битный режим лишь эмулируется
3) именно это из себя и представляет
4) cp437 обеспечивает адекватный вывод псевдографики; в любом чарсете, таковой предполагающем, символы псевдографики должны быть на тех же местах, что и в cp437
сомневающимся - просьба смотреть на mc при экранном выводе в cp1251 (по предоставлении справки от невропатолога о полной психологической устойчивости)
vt100 - тип терминала, эмулируемый всеми консольными драйверами (не только линуксовым)
5) кроме первого, с остальными не сталкивался; это в переводе? если да, нужно смотреть контекст оригинала
6) приложение никаких языков не распознает; вывод на экран (если это имелось ввиду) осуществляется в соответствие с экранным шрифтом и картой соответствия; язык тут не при чем вообще
7) LC_LANG определяет все остальные локально зависимые переменные, но, в отличие от LC_ALL, не запрещает в переопределить каждую из них отдельно (например, указать вывод сообщений по аглицки для нелюбителей ридной мовы, определить десятичную точку вместо запятой и т.д.)
PS часть из затронутых вопросов освящена здесь:
http://posix.ru/system/linux_console/
-
malor
- Сообщения: 335
Re: Общие вопросы русификации и локализации.
Что в чего необходимость возникает перекодировать с помощью ACM? Вот идет на консольный драйвер поток байтов в кодировке ASCII(подразумевается cp866?), остается только перекодировать их с помощью алгоритма UTF в UNICODE, обратится к SFM-файлу и выдать изображение символов.
"экранный драйвер" - Костромин "Linux для пользователя", стр. 318.
Выражение "драйвер терминала" везде в нете,
например:http://www.citforum.ru/operating_systems/linux/HOWTO/Text-Terminal-HOWTO-14.shtml
Допустим, есть некий текстовой файл, содержимое которого - смесь русского и английского(кириллицы и латиницы) на каком этапе и кем решается каким образом(рус/англ) отображать очередной считываемый байт на экране?
Все остальные - это какие например?alv писал(а): ↑22.07.2006 22:127) LC_LANG определяет все остальные локально зависимые переменные, но, в отличие от LC_ALL, не запрещает в переопределить каждую из них отдельно (например, указать вывод сообщений по аглицки для нелюбителей ридной мовы, определить десятичную точку вместо запятой и т.д.)
-
alv
- Бывший модератор
- Сообщения: 7275
- Статус: Пенсионер в законе
- ОС: Cintu
Re: Общие вопросы русификации и локализации.
2) не все шрифты имеют встроенную SFM-таблицу
и потом, SFM и ACM - это из разных пакетов управления консолью (одна - из kbd, вторая - из console-tools)
5) Костромин часто занимается словтворчеством, экранного драйвера нет, есть драйвер консоли Линукс; а в BSD-системах, например, можно использовать разные драйвера консоли - syscons (умолчание FreeBSD), wscons, и так далее
во втором случае, видимо, имеется ввиду драйвер конкретного терминального устройства - вчитываться лень, честно говоря
6) русские и английские символы имеют разные коды в любой кодовой таблице
7)
$ locale
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
любая из этих переменных может быть изменена независимо
например, если Вы не любите русских сообщений, определяется:
export LC_MESSAGES="POSIX"
и потом, SFM и ACM - это из разных пакетов управления консолью (одна - из kbd, вторая - из console-tools)
5) Костромин часто занимается словтворчеством, экранного драйвера нет, есть драйвер консоли Линукс; а в BSD-системах, например, можно использовать разные драйвера консоли - syscons (умолчание FreeBSD), wscons, и так далее
во втором случае, видимо, имеется ввиду драйвер конкретного терминального устройства - вчитываться лень, честно говоря
6) русские и английские символы имеют разные коды в любой кодовой таблице
7)
$ locale
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
любая из этих переменных может быть изменена независимо
например, если Вы не любите русских сообщений, определяется:
export LC_MESSAGES="POSIX"
-
malor
- Сообщения: 335
Re: Общие вопросы русификации и локализации.
А что у них есть за место sfm-таблицы? Как изображение символа получать?
Цитаты из "Заметки о Linux-консоли Украшение консоли"
"Полная коллекция кириллических экранных шрифтов включает наборы для всех традиционных кодировок Великого и Могучего, получивших распространение на родных просторах - DOS, Windows, KOI8, ISO8859-5, которые опознаются по именам шрифтовых файлов."
Какая связь между шрифтами и кодировками? Какая разница каким шрифтом изображать буквы закодированные в компе с помощью различных кодировок(cp866,cp1251,koi8,ISO8859-5)? Как шрифт может быть привязан к кодировке(учитывая, что все - кириллические)?
"$ setfont UniCyr-sans
Указанной команды достаточно, если мы работаем в режиме trivial, и притом только с одной и той же кодировкой ввода и вывода. На практике же в наших условиях такого почти не бывает - для вывода используется кодировка DOS, для ввода - обычно KOI8-R (или CP1251)."
Речь о вводе с чего? С клавиатуры?
Какой смысл присутствия переменной LANG? Мы можем их разом все конвертануть во что угодно, написав команду export LC_ALL, где LC_ALL=то_что_надо. Если кто-то что-то не любит, то как вы написали, он это изменит личным обращением к нужной переменной. В чем польза LANG?alv писал(а): ↑23.07.2006 14:577)
$ locale
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
любая из этих переменных может быть изменена независимо
например, если Вы не любите русских сообщений, определяется:
export LC_MESSAGES="POSIX"