Статьи :Операционные системы :Железо :
OS FAQ :
Кодинг :
Сейчас на сайте :0 пользователей, 27 гостей : |
Как-то так сложилось, что развитие Юникс-подобных систем в советские времена проходило...
Как-то так сложилось, что развитие Юникс-подобных систем в советские времена проходило либо в РСФСР, либо под руководством из РСФСР, причём тогда и не подозревали, что кому-то в голову придёт работать с текстами, написаными на отличном от русского языках. Неформально была придумана кодировка koi8-r, основным преимуществом которой было то, что текст, на машинах, не поддерживающих эту кодировку, оставался читабельным (напимилал транслит). И вот беда - добавили бы в неё 3-5 национальных украинских и белорусских символов - цены бы этой кодировке небыло... Но... Украинцы молодцы - пасетовали на этот счёт и заимели кодировочку koi8-u. Эти кодировки и были приняты как стандарт кириллицы в Юникс-системах.
Автор: Разместил: slayer Дата: 2006-07-03 15:47 Комментарии: ![]() ![]()
Пока комментариев нет
С выходом Windows кириллические кодировки IBM-866 и koi8 стали непригодными по причине своей текстовой ориентированности. И надо признаться, что Майкрософт, разработав cp1251 (Cyrillic - Windows), подумала о белорусах и украинцах гораздо больше, чем сами белоруссы и украинцы. И хотя были несмелые попытки разработки кодировки koi8-su, и теперешняя тенденция говорит о глобальном переходе на Unicode кодировки ( UTF-8 ). Но первая не получила признания общественности, а под второй возникает масса неоправданных трудностей при использовании (надеюсь - пока). Поэтому если сидя под Windows вы имели неосторожность создать файл с буквой "ў" в имени - то не так-то просто его из-под Юникса прочитать будет. Да и иметь систему в другой кодировке, когда вокруг одни Виндозеры - это напрягает, как морально, так и физически, поэтому вооружаемся статьёй и вперёд! 2. CP1251 locale для FreeBSD Локаль cp1251 поставляется в дистрибутиве с последними версиями системы (Для версии 4.9 и выше это 100% так. Ходит молва что это выполняется для систем старше июня 2003) Если каким-то чудом у вас её нет - качайте и устанавливайте! CP1251-locale Если всё нармально - то в папочке /usr/share/locale/ должен иметь место файлик, наподобии такого: ru_RU.CP1251 Использование locale CP1251 на консоли и виртуальных терминалах, вместо KOI8-R Файлик /etc/login.conf исправляем следующим образом: russian|Russian Users Accounts: :charset=CP1251: :lang=ru_RU.CP1251: :tc=default: Далее правим конфиги наших любимых оболочек: Для Bourne-Shell / Bash в файл /etc/profile вписываем: ... LANG=ru_RU.CP1251; export LANG LC_ALL=ru_RU.CP1251; export LC_ALL MM_CHARSET=CP1251; export MM_CHARSET ... Для Csh / Tcsh в файл /etc/csh.login вписываем: ... setenv LANG ru_RU.CP1251 setenv MM_CHARSET CP1251 ... либо проделываем аналогичные действия у пользователя в $HOME, в .profile/.bash_profile (shell/bash), либо в .login (csh/tcsh). Консоль и виртуальные терминалы (фонты и клавиатура) настраиваются через файл /etc/rc.conf: До начала редактирования этого файла вам желательно иметь файл клавиатурной раскладки для кодировки cp1251, с загадочным названием ru.cp1251.kbd. Скачайте его и положите в /usr/share/syscons/keymaps. Поскольку шрифты cp866 самые удачные, используем их таблицу перекодировки из cp866 в 1251 - win2cpp866.scm качаем и ложим в /usr/share/syscons/scrnmaps Вот теперь в /etc/rc.conf смело пишем следующее: ... keymap=ru.cp1251 # можно не использовать, by default клавиша "CAPS LOCK" #keychange="61 ESC[K" scrnmap="win2cpp866" font8x16=cp866-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8 ... Для тех, кому интересно: Возникает вопрос, почему нельзя использовать напрямую шрифты ср1251, а надо перокодировать из ср866? Отвечаю: ср866 - кодировка, разработанная IBM в незапамятные времена, когда о графике и думать боялись и наряду со многими другими вшита в BIOS вместе со своими шрифтами. Основным отличием от ср1251 является то, что она ориентирована сугубо на текстовый режим работы дисплея, по сему имеет в своём распоряжении всякого рода псевдографику (ну например рамочки красивенные рисовать в MidnightCommander). СР1251 лишена этого в силу своей графической ориентированности. Поэтому любознательные могут попробавать написать следующее: ... keymap=ru.cp1251 #keychange="61 ESC[K" font8x16=cp1251-8x16 font8x14=cp1251-8x14 font8x8=cp1251-8x8 ... и посмотреть, что получиться. Во-первых шрифт на самом деле куда менее красивый, во вторых всякого рода рамочки уже не рисуются, и, самое главное, некоторые символы расцениваются как управляющие, из-за чего вообще не отображаются, либо отображаються с различными приколами. Ну как преимущество - возможность использования символов, отсутствующих в 866 и присутствующих в 1251. В основном же примере используется карта перекодировки из 1251 в 866, и вывод производиться уже 866-ми шрифтами и кодировкой... Недостаток: символы "ІіЎў№" да и многие другие вы увидите в виде крючков. Примичание: Проверте и при необходимости поправте содержимое файла /etc/ttys. Оно должо сожержать похожие строки: ttyv0 "/usr/libexec/getty Pc" cons25r on secure ... ttyv5 "/usr/libexec/getty Pc" cons25r on secure ... т.е. все cons25, если таковые имеются, должны быть исправлены на cons25r. Ну теперь перегрузитесь и проверте: переключите раскладку и понабирайте русский текст, командой cat попробуйте вывести какой-либо текст набранный под Виндой и т.д. 3. Наборы CP1251 фонтов для XFree86 Есть много разных CP1251 фонтов для X11, у меня стоят следующие: * Шрифты cyr-rfx проекта (наиболее полные и качественные) * Cronyx фонты (Windows CP1251) * Шрифты, сконвертированные из Cronyx-koi8 шрифтов * XRus-1251 шрифты * Micex фонты (Windows CP1251) * Ещё одни Cronyx (Windows CP1251) Разворачиваете нужные или подходящие вам шрифты в /usr/X11R6/lib/X11/fonts, добавляете их в /etc/X11/XF86Config, например: ... # FontPath "/usr/X11R6/lib/X11/fonts/local/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi/" #--lavr Windows-CP1251 fonts FontPath "/usr/X11R6/lib/X11/fonts/win-micex/misc/" FontPath "/usr/X11R6/lib/X11/fonts/win-micex/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/win-micex/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/CID/" FontPath "/usr/X11R6/lib/X11/fonts/PEX/" FontPath "/usr/X11R6/lib/X11/fonts/TTF/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/local/share/koi8r-ps/" # ... Можно даже взять шрифты *.ttf из Винды, также прописав папку с ними в этом файле и выполнив команду "mkfontdir" в папке с текущим шрифтом. Рестартуете X11 или прямо в сеансе добавляете их в FontPath: xset +fp /usr/X11R6/lib/X11/fonts/win-micex/misc xset +fp /usr/X11R6/lib/X11/fonts/win-micex/75dpi xset +fp /usr/X11R6/lib/X11/fonts/win-micex/100dpi Теперь смело можно смотреть файлы в Windows-CP1251 кодировке, набирать текст и свободно переносить его в Винду, и самое главное - появляется возможность маунтить виндовые разделы, в которых есть файлы, в имени которых затусавались символы, отсутствуюющие в кои8! Для переключения раскладок в X11 можно воспользоваться портами FreeBSD: * /usr/ports/russian/xxkb Ивана Паскаля * /usr/ports/russian/xruskb Александра Лукьянова Либо если вы используете довольна новый Х-сервер (не ниже XFree86-4.3.0), то воспользуйтесь встроеным в него xkbd, добавив в XF86Config следующие строки: Section "InputDevice" Identifier "Keyboard1" Driver "Keyboard" Option "AutoRepeat" "500 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc104" #Англиская и белорусская раскладки ( ru - для русской, и т.д. ): Option "XkbLayout" "us,by" #Переключение по ctrl+shift Option "XkbOptions" "grp:ctrl_shift_toggle" Option "XkbVariant" "winkeys" EndSection И перезапустите Х-сервер. 4. Монтирование дисковых разделов других файловых систем в cp1251 в FreeBSD У команды mount и производных от неё mount_msdos, mount_ntfs и т.д. имеется куча параметров, среди которых имеется и параметр -W, задающий файл перекодировки символов. Для злосчастной кодировки koi8-r это был файлик из стандартного дистрибутива koi2dos. Теперь это вчерашний день! Быстренько качаем отсюда файлик win2dos и копируем его в папочку /usr/libdata/msdosfs. Теперь раздел ФАТ32, к примеру, монтируется коммандой такого вида: mount_msdos -Wwin2dos /dev/ad0s6 /mnt/FAT32 Либо аналогично через запись в /etc/fstab следующей строки: /dev/ad0s6 /mnt/FAT32 msdos rw,-Wwin2dos,-Lru_RU.CP1251 0 0 Ну вот в принципе и всё! Теперь вы можете свободно слушать белорусскую или украинскую музыку назло орущим во всё горло заядлым юниксоидам о том, что "Кои8 - это круто, потомучто это не от Майкрософт!" Ну ещё отмечу, что некоторые программы, типа того же МС, останутся рускоязычными, кроме подсказок, которые упрямо будут выводиться в кои. Проблемы такого рода очень просто снимаются перекодировкой файла, содержащего эти подсказки с помощью любой программы конвертации, например iconv. Источник http://www.bsdportal.ru/kb.php?mode=article&k=79 Автор Лаврусик Игорь freebsd-1251@tut.by |