Sledovat' standartu - eto eshche ne vse. V real'noj zhizni nado obespechit' eshche i obratnuyu sovmestimost'. V nashem sluchae eto oznachaet, chto nashi nastrojki ne dolzhny prepyatstvovat' sozdaniyu dannyh s pomoshch'yu drugih kodirovok, otlichnyh ot standartnoj. |to mogut byt' dannye v Alt (cp866) ili v cp1251. Takzhe dolzhna byt' vozmozhnost' zapuskat' russkoyazychnye programmy iz MS-DOS.
V bol'shinstve sluchaev (krome HTTP) dostatochno obespechit' konvertaciyu dannyh v KOI8-R. Esli my govorim o dannyh s prostoj strukturnoj organizaciej, to eto prosto - smotrite razdel Simvol'naya perekodirovka.
Drugoe delo - dannye s opredelennoj strukturoj. V etom sluchae dejstviya ne tak trivial'ny. YA poprobuyu opisat' standartnye podhody dlya resheniya etoj problemy.
MIME format - standartnoe arhitekturno-nezavisimoe predstavlenie
dannyh. Pervonachal'no eto predstavlenie dannyh bylo razrabotano dlya
pis'mennyh soobshchenij, a sejchas ego ispol'zuyut i v drugih mestah. Standart
MIME opredelyaet format, kotoryj otkryt dlya rasshirenij i pozvolyaet
podderzhku i rabotu so specificheskimi dannymi. Naprimer, esli ya poslal
pis'mo, soderzhashchee MIME ob®ekt video/mpeg
tipa (MPEG fajly),
moya programma priema elektronnyh soobshchenij avtomaticheski dekodiruet ego
i zapustit MPEG proigryvatel'.
Bol'shinstvo UNIX programm, predlagayushchih MIME servis, dlya etih celej
ispol'zuyut paket metamail
, kotoryj soderzhit nabor utilit
i fajlov dannyh dlya raboty s ob®ektami MIME. Neskol'ko fajlov konfiguracii
(/etc/mailcap
- dlya sistemnoj nastrojki i ~/.mailcap
-
dlya pol'zovatel'skoj nastrojki) opredelyayut direktivy dlya raboty s ob®ektami
MIME razlichnyh tipov.
Poetomu, esli vy poluchili potok MIME dannyh, soderzhashchij tekst v odnoj iz ustarevshih kodirovok, vy mozhete opredelit' sootvetstvuyushchie MIME-direktivy dlya konvertacii takogo teksta v KOI8.
Nizhe perechisleny MIME-zakony, kotorye opisyvayut pravila raboty s obychnymi tekstami i tekstami v richtext formate, ispol'zuyushchih ne osobenno nuzhnye (ustarevshie) kodirovki, opisannye vyshe. Vy mozhete vstavit' eti direktivy v odin iz fajlov konfiguracii MIME.
Obratite vnimanie: |ti direktivy ispol'zuyut paket translit
,
dlya togo, chtoby proizvodit' samo preobrazovanie. Dlya bolee
polnoj informacii ob etoj programme i dlya informacii po perekodirovki
smotrite razdel
Simvol'naya perekodirovka.
text/plain; translit -t cp1251-koi8.rus < %s; test=test \ "`echo %{charset} | tr '[A-Z]' '[a-z]'`" = cp1251; copiousoutput text/richtext; translit -t cp1251-koi8.rus < %s; test=test \ "`echo %{charset} | tr '[A-Z]' '[a-z]'`" = cp1251; copiousoutput text/plain; translit -t alt-koi8.rus < %s; test=test \ "`echo %{charset} | tr '[A-Z]' '[a-z]'`" = cp866; copiousoutput text/richtext; translit -t alt-koi8.rus < %s; test=test \ "`echo %{charset} | tr '[A-Z]' '[a-z]'`" = cp866; copiousoutput text/plain; translit -t alt-koi8.rus < %s; test=test \ "`echo %{charset} | tr '[A-Z]' '[a-z]'`" = alt; copiousoutput text/richtext; translit -t alt-koi8.rus < %s; test=test \ "`echo %{charset} | tr '[A-Z]' '[a-z]'`" = alt; copiousoutput
Dostatochno, eto rabotaet tol'ko v sluchae obychnogo teksta. Binarnye fajly dannyh dolzhny sami otrabatyvat' dannye v razlichnyh kodirovkah (Po krajnej mere, eto dolzhny delat' programmy, sozdavshie ih). Poetomu esli vy poslali fajl Microsoft Word v kodirovke cp1251, to s etim dolzhna razobrat'sya programma, v kotoroj vy chitaete etot tekst (Naprimer MS Word ili Applix Words).
K neschast'yu, dejstvitel'naya situaciya daleka ot ideala. Mnogo programmnyh produktov imeyut sobstvennye idei po povodu togo, kak ispol'zovat' MIME. Do nedavnego vremeni Microsoft Mail ispol'zoval isporchennyj mehanizm raboty s MIME. Hotya i Netscape Navigator/Communicator klient otpravki/priema soobshchenij izvesten tem, chto shlet tekst pis'ma v cp1251, a ego zagolovok v charset=koi8-r kodirovki i naoborot.
Dovol'no chasto sluchaetsya tak, chto te kto posylayut
vam pis'ma nepravil'no nastraivayut (ili ne nastaivayut voobshche,
a po umolchaniyu stoit cherte-che - primer Outlook) svoi pochtovye
programmy. V zagolovkah pisem vmesto windows-1251
chashche vsego
stoit iso-8859-1
, US-ASCII
ili UNKNOWN-8BIT
. Dlya
ispravleniya poluchaemyh pisem sozdajte fajl ~/.procmailrc
so
sleduyushchim soderzhaniem (no ya preduprezhdayu vas, chto posle oshibki v
~/.procmailrc
vy mozhete poteryat' vsyu vashu pochtu):
:0 fHw * ^Content-Type: *text/plain; *charset="?(iso-8859-1|US-ASCII|UNKNOWN-8BIT)"? | formail -i "Content-Type: text/plain; charset=windows-1251"
V Internet mozhno najti mnozhestvo programm, perekodiruyushchih kirillicheskie teksty. Kazhdaya iz nih imeet svoyu izyuminku i otlichaetsya stepen'yu podderzhki kirillicy.
S moej tochki zreniya, utility dolzhny byt' standartnymi. V nashem, chastnom, sluchae takoj "standartnoj" utilitoj yavlyaetsya GNU recode. ( http://www.iro.umontreal.ca/~pinard/recode/).
Naprimer chtoby perekodirovat' iz cp1251 v koi8-r sleduet skazat':
$ recode CP1251..KOI8-R winfile.txt
Tak zhe shiroko rasprostraneny iconv (vhodit v postavku glibc)
Opyat' zhe cp1251 v koi8-r:
$ iconv -f866 -tKOI8-R -o<outfile> infile
Mozhno vospol'zovat'sya paketom translit. On podderzhivaet mnogo populyarnyh kodirovok i dazhe sposoben sozdavat' TeX fajly (sm. razdel tex ) na russkom yazyke.
V konce koncov sgoditsya obychnyj lynx (cp1251 v koi8-r):
$ lynx -assume_local_charset cp866 file.txt
Dlya drugih programm preobrazovaniya - zaglyanite na stranichku
SovInformBureau
ili na
ftp.funet.fi. Vy dazhe mozhete ispol'zovat' special'nuyu modu
dlya emacs
(Smotrite razdel
Emacs i XEmacs).
Windows imeet vozmozhnost' davat' imena fajlov v kodirovke Unicode, poetomu pol'zovateli mogut davat' osmyslennye imena svoim fajlam. Linux, odnako, ne daet polnoj podderzhki dlya Unicode, poetomu esli vy montiruete disk Windows VFAT, to uvidite, chto podobnye imena sostoyat iz voprositel'nyh znakov i prochego musora.
Zdes' ukazan put' kak poluchit' pravil'noe preobrazovanie:
ls /lib/modules/`uname -r`/fs/nls_*
).
mount
:
codepage=866,iocharset=koi8-rili propishite v
/etc/fstab/
primerno takuyu strochku:
/dev/hda5 /mnt/d vfat noexec,dev,suid,rw,umask=002, codepage=866,iocharset=koi8-r, gid=101 0 0dlya vyyasneniya podrobnostej smotrite man mount.
Bolee podrobno smotrite Documentation/filesystems/vfat.txt
v ishodnikah yadra Linux.
|to, vidimo, edinstvennyj programmnyj produkt, kotoryj trebuet
prisutstviya Alt
kodirovki. Osnovaniem yavlyaetsya to, chto Alt
-
eto rodnaya kirillicheskaya kodovaya stranica DOS. Bol'shinstvo programm,
rabotayushchih v DOS s kirillicej, orientirovany na Alt
.
Dlya konsol'noj versii (dos
) vy dolzhny zagruzit' tol'ko
klaviaturu i ekrannyj drajver. Bol'shinstvo drajverov DOS budet
prekrasno rabotat'. A. Belikov ispol'zuet rk
drajver A. Strahova,
kotoryj rabotaet i dlya konsoli, i X versii dosemu
. Drugaya
al'ternativa - eto r
drajver Vadima Kurlyanda (poslednyaya
versiya 2.0 etogo drajvera i ego razvitie prekrashcheno). On prekrasno
nastraivaetsya i podderzhivaet mnogo kodirovok, v tom chisle Alt
i
KOI8
. Odnako on, veroyatno, ne budet rabotat' dlya X Window
(po krajnej mere versiya 1.14 ne rabotaet).
Oba rusifikatora mozhno najti na bol'shinstve Rossijskih Internet arhivah, naprimer, na ftp arhive Kurchatovskogo Instituta YAdernoj Fiziki.
Krome togo, est' patch v http://www.ice.ru/~vitus/misc/, kotoryj pozvolyaet obojtis' bez rusifikatora klaviatury. |tot patch rekomenduetsya v X-ah, tak kak pozvolyaet izbezhat' dvuh klavish pereklyucheniya - odnoj v DOS drugoj - na ostal'nom desktope. Dlya raboty s udalennym dosemu (po telnet/ssh/rsh) patch yavlyaetsya neobhodimym usloviem.
Dlya Xovyh versii dosemu
vy dolzhny ustanovit'
sootvetstvuyushchij X shrift s 866-oj kodipovkoj. Vzyat'
mozhno po adpesam
http://www.ice.ru/~vitus/works/x11.html, ili
ftp.dosemu.org,
ili vzyat' u avtora (eti shrifty sdelal Dima Bolhovityanov)
www.inp.nsk.su/~bolkhov
Krome shriftov v kodirovke cp866 tam mozhno najti i drugie kirillicheskie
shrifty. Naprimer vga_bul8x16.pcf.gz
i vga_bul.pcf.gz
imeyut
kodirovku MIK (Bolgariya), vga_ruscii_8x16.pcf.gz imeet ukrainskuyu
"dosovskuyu" kodirovku ruscii.
Dlya ustanovki shriftov dlya dosemu
vy dolzhny
dosemu
. Esli shrift tol'ko zamenyaet
pervonachal'nyj shrift vga
, to on budet opoznan po umolchaniyu.
Inache vy dolzhny opisat' ego v /etc/dosemu.conf
:
# Font to use (without filename extensions). For example: X { updatefreq 8 title "MS DOS" icon_name "xdos" font "vga-alt"}
I v zaklyuchenie, vy dolzhny zagruzit' drajver klaviatury.
Obratite vnimanie, chto vam ne nuzhny ekrannye drajvery v X okne.
Ne vse drajvery budut rabotat', no, po krajnej mere,
dva iz nih budut: rk
A. Strahova, i cyrkeyb
Pete Kvitek -
no luchshe vospol'zovat'sya patchem
http://www.ice.ru/~vitus/misc/.
Esli gtk ne nahodit nuzhnyh shriftov, on rezhet 8-j bit.
SHrifty zadayutsya v /etc/gtk/gtkrc.$LANG
. Poetomu nuzhno
sozdat' fajl gtkrc.ru
ili popravit' sushchestvuyushchij. Vnutri
dolzhno byt' primerno sleduyushchee (nazvaniya
shriftov, razmery i prochie atributy mozhno ispravit' po vkusu,
no eti shrifty dolzhny soderzhat' kirillicu v koi8-r):
style "gtk-default-ru" { fontset = "-cronyx-helvetica-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-courier-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-fixed-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-times-medium-r-normal--*-*-*-*-*-*-koi8-r" } class "GtkWidget" style "gtk-default-ru"
I skopirovat' etot fajl v 'gtkrc.ru_RU.KOI8-R'
ili sdelat' symlink:
$ cd /etc/gtk/ $ ln -s gtkrc.ru gtkrc.ru_RU.KOI8-R
Podrobnosti sm. www.gtk.org, a takzhe http://www.linux.org.ru/gnome/