RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Небольшое вступление. На юникс-форумах происходит много споров на тему "А нужен ли юникод юникс-системам ?",но чёткого вывода эти споры так и недают.Сделаем простой вывод,что раз есть такая кодировка ,значит она кому то нужна . Я не буду рассматривать её достоинства или недостатки ,не буду склонять к тому чтобы срочно все переходили на utf,а просто поделюсь своим опытом перехода на unicode в системе FreeBSD.Опять же сразу оговорюсь что данная мной методика не является обязательной в исполнение каждого пункта статьи ,а с успехом может быть заменена на другие методы решения возникших вопросов .Если посмотреть на дистрибутивы Linux то там уже довольно удачно юникод применяеться в качестве основной кодировки дистрибутивов ,это такие как Suse,Red Hat/Fedora и некоторые другие.Остальные создатели дистрибутивов посматривают в эту сторону ,но пока не все спешат с переходом на юникод по умолчанию в системе ,хотя полная поддержка utf-локализации обеспеченна практически во всех линукс-дистрибуивах.До сей поры юникод как-то обходил стороной BSD-системы .Но прогресс так сказать не стоит на месте ,и в недавних релизах BSD-систем (FreeBSD,DragonFlyBSD ,NetBSD)появилась вобщем то полная поддержка utf-локализаций.Остановимься на самой популярной из них -FreeBSD (на даный момент версия 5.3),но я думаю тоже самое может быть и применено и в других BSD-системах .Поставим для себя такую цель : Работать во FreeBSD ,плюс чтоб была обеспеченна полная руссификация причём в юникоде.
Юникодная консоль и руссификация. Вот тут мы наступаем на первые грабли .Для начала чтоб неморочить голову делаем руссификацию в точности как описанно в HandBook не больше и не меньше. А как же юникод ? Вот тут сразу придётся огорчить читателя ,что консоль FreeBSD пока не совсем готова к принятию юникода ,а для нормальной работы вам придёться использовать старый добрый koi8-r .Причин здесь несколько,но скажу лишь про одну из основных .Для для того чтобы реально попробовать юникод в консоли FreeBSD нужны мап-файлы (файлы кодировок ввода/вывода символов на консоль) .Просто посмотрим в каталоги /usr/share/syscons/scrmaps и /usr/share/syscons/keymaps и убедимся что файлы в кодировке юникод отсувствуют,длительные поиски в сети как мои ,так и заинтересовавшихся товарищей юникодных мап-файлов дали отрицательный результат,да и вобще если таковые и были бы ,то сама структура syscons вызывает сомнения с точки зрения пригодности к юникоду ,но это требует отдельных широких исследований.А как же тогда юникод ? Ответ:"X-Window -вот что нам нужно ". По простому называемые иксы давно готовы к принятию юникода .Собственно с ними и будем работать.Конечно разность кодировок в консоли и иксах может вызывать противоречивые чувства у многих (типа локаль должна быть едина) ,но как говориться и здесь можно найти свои преимущества.Cама локаль идёт во FreeBSD начиная с версии 5.2 ,но если вдруг неокажется увас по каким либо причинам то её можно установить из портов - /usr/ports/misc/utf8locale.
Настройка локали. Оговорюсь сразу что у меня оболочка bash ,и всё ниженаписанное по настройкам применительно к ней ,но и с другими шеллами затруднений не должно возникнуть ,главное понять суть вопроса. Собственно раз мы будем работать с юникодом в иксах,то задаём переменные для рализации юникодной локали в домашнем каталоге ,в файле ~/.xinitrc ,в самых первых строках файла. Нужно задать соответствующие переменные,для чего привожу простой пример состава файла ~/.xinitrc:
Конечно fluxbox может быть заменён на другой менеджер .Мне по почте отписали что что переменную LC_ALL следует делать LC_ALL=" " ,то есть оставить пустой ,но на поверку оказалось ,что если так сделать ,то получаем большие проблемы с вводом русских букв в иксовых терминалах ,а вот при указание проблема исчезает.Ещё совет - нужно побольше установить шрифтов TTF в каталог usr/X11R6/lib/X11/fonts/TTF .Это нужно для нормального отображения и вобще работы в некоторых приложений (подойдут из всем ивестной сиситемы виндовс).Рекомендую после того как скопированны шрифты сделать следущее под рутом :
cd /usr/X11R6/lib/X11/fonts/TTF mkfontscale mkfontdir fc-cache
И проверьте что в /etc/X11/xorg.conf указан путь к /usr/X11R6/lib/X11/fonts/TTF.
Иксовые терминалы. Не во всех терминалах ввод/ввывод русского языка при локали юникод проходит нормально ,лучше для этого под рукой иметь терминалы с умолчательной юникодной поддержкой.Нормальные терминалы поддерживающие юникод - ввод русского с клавиатуры ,и вывод сообшений на экран терминала по-русски -xterm mlterm,rxvt-unicode,gnome-terminal. К остальным нужно применять некоторые ухищрения ,вот например для aterm: файл ~./.Xdefault пишем :
Виндовс-Менеджеры В принципе подойдут все сейчас популярные менеджеры.Опробованны в юникоде : KDE,XFCE,wmaker,семейство боксов -openbox,blackbox,hackedbox .Проблем в работе с юникодом не возникло.Я уверен что и с Gnome никаких замечаний не будет . С установленным из портов fluxbox-0.1.14 есть проблема - никак не хотели отображаться опции из Configure и заголовки приложений .Рекомендую метод - взять и удалить эту версию флукса вобще ,а вместо него взять последние исходники fluxbox-0.9.12 и пересобрать так:
Midnight Commander. Самый популярный файл-менеджер вызвал больше всего головной боли.Обычный устанавливаемый mc из /usr/ports/misc/mc показал изрядную неспособность работать в юникоде ,даже в юникодных терминалах проявляется неотображение mc вобще или нестабильная работа- пропадание некоторых букв при вводе и т.п. Ясно что тут дело в опциях компиляции .Здесь есть три пути борьбы с данной проблемой :
Путь №1 (юниксоида): 1)Распаковать находящиеся в каталоге /usr/ports/distfiles исходники с mc-4.6.0.tar.gz в любой каталог под рутом (прежде удалите установленный mc) . 2)Берём патчи отсюда - http://www.linux.kiev.ua/%7Esimonov/files/unicode/mc-utf8.tar.gz - распаковываем в каталог с исходником по примеру : cat ./.utf8 | patch2 -p1 -b .utf8 и далее также со всеми патчами . 3)Делаем следущую перекодировку : iconv -f iso8859-1 -t utf-8 -o mc.hint.tmp mc.hint && mv mc.hint.tmp mc.hint iconv -f koi8-r -t utf8 -o mc.hint.ru.tmp mc.hint.ru && mv mc.hint.ru.tmp mc.hint.ru 4) Далее упаковываем исходник опять в формат tar.gz и кидаем его в /distfiles ,идём в /usr/port/misc/mc и в Makefile добавляем для CONFIGURE_ARGS+ опцию сборки --with-screen=slang .Потом всё как обычно : make make install При этом сохраниться целостность системы и получите юникодный mc.
Путь №2(меньшего сопротивления): Установить вместо обычного mc из портов его форк -/usr/ports/misc/mc-light. Данное ответвление mc развивается нашим российским разработчиком .Что мы теряем при этом :руссифицированное меню ,взаимодействие с иксами .Но это при работе в терминале не суть важно ,но что приобретаем :полная поддержка юникода ,множество кодировок (особенно при это видно при просмотре по F3 файлов с разными кодировками и при перекодирование "на лету" по CTRL+T ),и некоторыми дополнительными фичами,одна из которых прямая запись на CD через обыкновенное копирование по F5 и ещё много других ,не говоря уж о красивом разноцветном интерфейсе.
Путь №3 : Перебороть в себе тягу к mc ,и использовать графические файл-менеджеры поддерживающие юникод - krusader,gnome-commander,gentoo, и т.д. Скажу что я не смог себя перебороть это .Я выбрал путь№2,чем чрезвычайно доволен,но как говориться каждому своё.
Работа с консольными приложениями в икс-терминалах. Те приложения которые нормально поддерживают по умолчанию юникод работают более-менее сносно в вышеуказанных юникодных терминалах.Например такое приложение как centericq кроме utf-8 ,уже умеет поддреживать utf-16 и работает без проблем ,только немного поправив опции.Например из редакторов с успехом работают в юникоде -nano,pico,vi.Из консольных клиентов хорошо отработал cone .Но для и для нормальной работы с приложениями не поддерживающими юникод есть выход,например:
Чтобы нормально работать с jed нужно в ~/.bash_profile прописать : alias jed='LANG=ru_RU.KOI8-R; jed' ну и далее в том же духе для нужного вам приложения.
Работа с иксовыми приложениями. C простыми иксовыми и QT-приложениями проблем не замеченно . Но вот в GTK - в некоторых приложениях могут вместо букв быть квадратики или кракозябры (например в xmms в меню ) ,лечиться так : создаём в домашнем каталоге файл ~/.gtkrc и прописываем там следушее :
style "gtk-default" { fontset = "-*-Nimbus Sans L-medium-r-normal--14-*-*-*-p-*-iso10646-1,\ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\ -*-r-*-iso10646-1,*" } class "GtkWidget" style "gtk-default"
и всё -вместо квадратиков русские буквы ,с размером шрифта можно поиграть.
Вот вроде и всё .Я остался работать в юникоде под FreeBSD ,пока проблем не наблюдаю.