Podderzhka vseh kodirovok kirilicy serverom WWW
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.
Kak opredelyat', kakaya kodirovka nuzhna klientu.
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