Ocenite etot tekst:


                              Opyat' v karmane nicherta!
                              Nacional'naya cherta...
                                          Vladimir Medvedev

Dlya   podderzhki   kirilicy  my  vynuzhdeny  podderzhivat'  derevo
dokumentov v 7 razlichnyh  kodirovkah,  po  stepeni  znachimosti:
pure   english,   koi8,   win,   transliterated  volapuk,  alt,
iso_8859_5, macintosh adobe charset
 Problemy  "kodirovki"  english  zdes' rassmatrivat'sya ne budut
vvidu   neob®yasnimyh   politicheskih   pristrastij   avtora,   i
tehnicheskoj slozhnosti realizacii. A ob ostal'nyh - pogovorim.

Na  dannyj  moment  v  razlichnyh  WWW  klientah  (WWW  browser)
ispol'zuyutsya sleduyushchie kodirovki simvolov kirillicy:

KOI8-r, koi, koi8
     ili    RFC1489   -  rekomendaciya,  kotoraya  baziruetsya  na
     gosudarstvennom standarte  koda  obmena  informaciej  KOI8
     (GOST  19768-74).  Primenyaetsya v osnovnom na komp'yuterah s
     OS UNIX. SHiroko rasprostranena v seti Relcom.

CP-1251, win, windows
     Microsoft   code  page 1251. Primenyaetsya v okonnoj sisteme
     MS-Windows.

CP-866, alt
     Microsoft/IBM    code   page   866   ili  "al'ternativnaya"
     kodirovka.  Primenyaetsya   v   osnovnom   na   personal'nyh
     komp'yuterah s operacionnoj sistemoj MS-DOS

ISO-8859-5, iso_8859_5
     Mezhdunarodnyj standart. Primenyaetsya v osnovnom na razlichnyh
     komp'yuterah s OS UNIX.



YA    poschital    kakie   kodirovki   viewer'ov   ispol'zovalis'
posetitelyami   moej   biblioteki.

  mart aprel' iyun' avgust
  62%   65%    69%   65%  KOI
  19%   18%    19%   25%  windows
  12%   11%    10%    5%  volapuk
   3%    3%     1%    2%  alt
   2%    2%     1%    1%  iso_8859_5
   0%    0%     0%    0%  mac

Rezul'taty bylo legko predskazat', ne schitaya na udivlenie malyj
procent "chajnikov"-volapuk'istov.



-1.   U   vseh  klientov   v   mire  -  MS  Windows.  I  nechego
vypendrivat'sya, sushchestvuet tol'ko odna kodirovka russkih  bukv.

0.  Cynichno i deshevo: podderzhivaem vse 7 derev'ev. Periodicheski
puskaem  programmu,  kotoraya  sledit   i   sinhroniziruet   eto
bezobrazie.

1.   Vse   dokumenty  vydaem  cherez  sootvetstvuyushchij  kodirovke
cgi-skript - http://www.host/cgi-bin/KodEncoding/file/name.html
Skript    opredelyaet   zaproshennyj   dokument   po   peremennoj
$PATH_INFO, i kidaet ego, perekodiruya na letu.

2. Nasiluem sam server, i vshivaem perekodirovki vo vnutr'.

3.  Sazhaem  na  7  raznyh  portov,  vpered  nastoyashchego,  demony
perekodirovshchiki  (edakij  proxy).  Demon   schityvaet   request,
perebrasyvaet  ego  HTTPD  serveru,  ego  vydachu perekodiruet i
shvyryaet v klienta.

4. I vsegda pomnite: byla, est' i budet zamechatel'naya kodirovka
volapuk, po nauchnomu nazyvaemaya phonetic transliterated.



Tak  kak  pol'zovatel'skij interfejs obychno nastroen dlya raboty
tol'ko s kakoj-nibud' odnoj kodirovkoj, to server dolzhen:

     opredelit' kodirovku klienta;
     perekodirovat' zapros iz kodirovki klienta v svoyu lokal'nuyu
     kodirovku;
     perekodirovat' rezul'tat zaprosa (dokumenty) iz lokal'noj
     kodirovki v kodirovku klienta.

0. Klient sam dolzhen skazat', ustanoviv nam dopolnitel'nye polya
zagolovka. CHto-nibud'  tipa  Accept-charset,  Encoding  i  t.p.
Protokol  HTTP  1.0  peredaet  v zagolovke zaprosa perechislenie
dopustimyh  formatov  dokumentov  (MIME  content-type)  v  pole
"Accept:".  Klient  mozhet podstavit' v nego virtual'nyj format,
sootvetstvuyushchij   svoej   kodirovke.   Znachenie   etogo    polya
ustanavlivaetsya dlya CGI-skripta v peremennoj HTTP_ACCEPT.

Mozhno ispol'zovat' virtual'nye formaty:

 text/x-cyrillic-iso-8859-5
 text/x-cyrillic-iso
 text/x-cyrillic-iso8859-5       - ISO-8859-5

 text/x-cyrillic-koi
 text/x-cyrillic-koi8            - KOI8-r

 text/x-cyrillic-win
 text/x-cyrillic-cp1251          - CP1251 v Windows

 text/x-cyrillic-alt
 text/x-cyrillic-cp866           - CP866

V novyh versiyah Mosaic i v Linx 2.3 znachenie polya "Accept: "
Zadaetsya v fajle .mailcap -  takim obrazom:

        text/x-cyrillic-koi8; more %s

Tol'ko  vot  99%  klientov  delat'  etogo  ne umeyut (i v pervuyu
ochered' imeyutsya vvidu klienty topchushchie knopki).


1.  Po  peremennoj HTTP_USER_AGENT: *X11* - znachit koi, *Win* -
znachit win, i t.d. Uzhe luchshe, no  nasil'no  mil  ne  budesh',  i
postradayut   ot   etogo  v  pervuyu  ochered'  prodvinutye  yuzery
(naprimer vindyukist ne  polenivshijsya  vystavit'  sebe  fonty  i
kejbord pod koi8)

2. Startovyj katalog zaprashivaemogo dokumenta: /win, /koi, /lat

3.  Nomer porta, na kotoryj prihodit soedinenie: 80 - koi, 81 -
win, i t.d.

4. Imya servera, kotoroe ispol'zuet klient dlya zahoda k nam:
http://www-koi8.*, http://www-win.*, ...

 Utverzhdenie: Odin i tot zhe dokument v raznyh kodirovkah OBYAZAN
IMETX RAZNYE URL.
 Vopros:  Pochemu  NELXZYA  pol'zovat'sya  neyavnoj  perekodirovkoj
(t.e.  v zavisimosti ot tipa klienta davat' odin i tot-zhe URL v
raznyh kodirovkah)?
 Otvet: 1. Potomu chto vse normal'nye WWW klienty rabotayut iz-za
proksi-servera -  i  posle  togo  kak  odin  vindyukist  poluchit
dokument,  vse  ostal'nye  yuzery  koi8'os'misty  budut poluchat'
otkeshirovannuyu kopiyu NE V SVOEJ kodirovke. 2. Potomu chto  robot
Al'tavisty   proindeksiruet   etot   dokument  tol'ko  v  odnoj
kodirovke, a v ostal'nyh - ego nikto ne najdet.



  CGI-perl skript podderzhki kodirovok v moej biblioteke
  Perekodirovshchik koi8 -> Apple  ot Aleksandra Fabera
  Tablicy perekodirovki iz KOI8 na yazyke perl
  perl-progamma, iz kotoroj ya sdelayu "proxy" perekodirovshchik
  Podprogrammki dlya vybora kodirovke na kliente. Perl
  Perekodirovshchik WWW stranic po zakazu
  Perekodirovshchik WWW stranic s prodolzheniem
  Zaplatki dlya rusifikacii Apach. Tovarnogo produkta poka net

Last-modified: Sat, 01 Feb 1997 06:22:39 GMT
Ocenite etot tekst: