However, the definition associated with MIME character set name must fully specify the mapping to be performed from octets to characters. IN PARTICULAR, USE OF EXTERNAL PROFILING INFORMATION TO DETERMINE THE EXACT MAPPING IS NOT PERMITTED.To pomeni, da uporabnik v nastavitvah svojega bralnika sicer lahko izbira med raznimi oblikami in velikostmi pisav, ne bi pa smel imeti moznosti, da rocno preklopi nabor znakov (npr. ce je MIME tip dokumenta ISO Latin 1, uporabnik ne sme imeti moznosti izbrati nabora Windows-1250). V tej tocki Netscape Navigator krsi standard.
Poleg tega osnovnega URLja lahko objavimo tudi alternative, ce imamo moznost objaviti vec kazalcev, ni pa sprejemljivo objaviti le npr. ISO Latin 2 ali Windows-1250 razlicice.
Pri sklicevanju med dokumenti (v linkih) poskusamo ohraniti izbrani nabor znakov, tako se npr. iz ISO Latin 2 dokumenta sklicujemo na ISO Latin 2 razlicico drugih dokumentov, ce te obstajajo, sicer se sklicujemo na ISO Latin 1 razlicico.
Ker nabor znakov ISO Latin 1 ne vsebuje sumnikov, jih lahko pisemo le kot c s z (ali npr.: "c "s "z oz. *c *s *z). Varianta ISO646-YU (~{`) v ta namen ni sprejemljiva, saj ni podmnozica ISO Latin 1 in krsi izjavo streznika, da gre za ISO Latin 1 dokument (znaki ~{`^[@ v US-ASCII in v ISO Latin 1 so locila in ne crke).
Standard doloca takole:
Legal values for the charset parameter of the MIME HTML type are:To pomeni, da je najbolj splosno uporabna varianta za slovenscino (poleg ISO Latin 1 ali njegove 7-bitne US-ASCII podmnozice) nabor ISO-8859-2 (t.j. ISO Latin 2 -- ta ni enak naboru MS Windows Latin 2 !). ISO Latin 2 vsebuje vse potrebne sumnike za slovenscino.charset = "US-ASCII" | "ISO-8859-1" | "ISO-8859-2" | "ISO-8859-3" | "ISO-8859-4" | "ISO-8859-5" | "ISO-8859-6" | "ISO-8859-7" | "ISO-8859-8" | "ISO-8859-9" | "ISO-2022-JP" | "ISO-2022-JP-2" | "ISO-2022-KR" | "UNICODE-1-1" | "UNICODE-1-1-UTF-7" | "UNICODE-1-1-UTF-8" | token token = 1 * <any CHAR except CTLs or tspecials>...
Although HTTP allows an arbitrary token to be used as a charset value, any token that has a predefined value within the IANA Character Set registry must represent the character set defined by that registry. Applications should limit their use of character sets to those defined by the IANA registry.
Ne glede na izbrani nabor znakov (razen ISO Latin 1) je nujno, da v MIME tipu izrecno navedemo, kateri nabor znakov je uporabljen v dokumentu. HTTP strezniku ne smemo dopustiti, da bi lazno trdil, da gre za ISO Latin 1, v resnici pa bi uporabili v dokumentu nekaj drugega.
Tule je preglednica moznih Content-Type: vrstic v HTTP glavi, ki bi lahko prisle v postev za slovenscino:
Content-Type: text/html (implicira ISO-8859-1) Content-Type: text/html; charset=ISO-8859-2 (ustreza standardu) Content-Type: text/html; charset=ISO646-YU (RFC1345) Content-Type: text/html; charset=IBM852 (IANA) Content-Type: text/html; charset=Windows-1250 (IANA: Windows-1250)
Tako na primer veljajo naslednje standardne preslikave iz koncnice imena datoteke v Content-Type: :
.html text/html .txt text/plain .gif image/gif .mp2 audio/x-mpeg
Za resitev problema slovenskih sumnikov lahko tem preslikavam dodamo npr. naslednje:
.html-l2 text/html;charset=ISO-8859-2 .html-646yu text/html;charset=ISO646-YU .html-cp852 text/html;charset=IBM852 .html-cp1250 text/html;charset=Windows-1250
Presledek za podpicjem ni obvezen, zato ga lahko mirno opustimo in si morda prihranimo kaksno nevsecnost v boju s sintakso pri vpisovanju dodatne preslikave v konfiguracijsko datoteko streznika.
Ce imamo vecino .html datotek ze pripravljenih v naboru ISO Latin 2, bi se lahko odlocili tudi za alternativno varianto, kjer bi imeli dokumenti s koncnico .html privzet nabor znakov ISO Latin 2, koncnico .html-l1 pa bi na primer uporabili za ISO Latin 1 kodiranje:
.html text/html;charset=ISO-8859-2 .html-l1 text/html .html-l2 text/html;charset=ISO-8859-2
Koncnice imen datotek so poljubne (znotraj omejitev racunalnikovega datotecnega sistema); ko pa jih izberemo, moramo te koncnice tudi uporabiti v imenih datotek, ki jih ta streznik ponuja.
Izbira koncnice imena ne vpliva na bralnike, saj ti upostevajo le MIME tip dokumenta, ignorirajo pa njegovo ime, zato ni treba skrbeti niti avtorju niti bralcem, da bi razlicne koncnice imena datoteke lahko zmedle bralnik.
Ce datotecni sistem omejuje koncnico imena datoteke na tri velike crke, lahko izberemo npr.:
.L2 text/html;charset=ISO-8859-2 .646 text/html;charset=ISO646-YU .852 text/html;charset=IBM852 .L2W text/html;charset=Windows-1250
Detajli nastavitev se razlikujejo med strezniki, ne bi pa smelo biti tezko najti nacina za dodajanje novih preslikav.
Primeri:
AddType .html-l2 text/html;charset=ISO-8859-2 8bit 1.0in po potrebi se npr.:
AddType .html-646yu text/html;charset=ISO646-YU 7bit 0.8 AddType .html-cp852 text/html;charset=IBM852 8bit 0.9 AddType .html-cp1250 text/html;charset=Windows-1250 8bit 0.9
AddType text/html;charset=ISO-8859-2 .html-l2
AddType text/html;charset=ISO-8859-2 html-l2
suffix .html-l2 text/html;charset=ISO-8859-2 8BIT 1.0
Po spremembi konfiguracijskih datotek je verjetno treba streznik na to opozoriti ali ga pognati znova. Sistem Windows NT je treba zagnati na novo.
Odslej bodo vse datoteke, ki se koncajo na .html-l2, opremljene s HTTP headerjem Content-Type: text/html;charset=ISO-8859-2, vse tiste, ki se koncajo na .html, pa bodo se naprej opremljene s Content-Type: text/html, kar implicira ISO Latin 1 nabor znakov.
Namesto da izpise:
Content-Type: text/htmlmora izpisati:
Content-Type: text/html; charset=ISO-8859-2kadar na primer posilja dokument v naboru ISO Latin 2.
Dva primera CGI programa za sprotno pretvorbo med nabori znakov:
Mimogrede naj omenim se en problem z dokumentom, ki se vsakokrat predela skozi CGI skript -- cache takih dokumentov noce hraniti, zato dostop do njih vedno zahteva zvezo z oddaljenim streznikom, kar bolj obremenjuje omrezje in je pocasno za uporabnika. Kljub nekoliko vecji potrati diska na strezniku, so staticni dokumenti s tega stalisca prijetnejsi za uporabnika.
Pokazali smo tudi dve varianti, kako lahko na strani streznika zagotovimo, da bodo dokumenti opremljeni z ustrezno Content-Type glavo -- za staticne in za dinamicne dokumente. Opisani metodi sta preprosti in ilustrativni, nikakor pa ne edini mozni.
desetiska osmiska | desetiska osmiska znak koda koda | znak koda koda ----------------------+---------------------- c 232 350 | C 200 310 (ch) s 185 271 | S 169 251 (sh) z 190 276 | Z 174 256 (zh) c 230 346 | C 198 306 (cj) d 240 360 | D 208 320 (dj)
Vec o ISO Latin naborih znakov se nahaja na: http://www.cs.tu-berlin.de/user/czyborra/charsets/
Na Unixu npr. zamenjamo ISO Latin 2 v ISO Latin 1 (csz) z ukazom:
perl -p -e 'tr/\350\271\276\346\310\251\256\306/cszcCSZC/;' \ my-file.html-l2 >my-file.html
Na CATHY pa npr. z ukazom:
$ exe perl -p -e "tr/\350\271\276\346\310\251\256\306/cszcCSZC/;" - my-file.html-l2 >my-file.htmlUporabimo lahko tudi program sumniki avtorja Branka Drevenska. Program je v javni lasti, na voljo je izvorna koda v C++, in prevedene (exe/bin) verzije za Windows 95 / Windows NT, DOS, OpenVMS in druge sisteme - glej Kako uporabljati slovenske crke v HTML dokumentih? (David Vrtin); tam so tudi navodila za nastavitev urejevalnika emacs za delo z Latin 2.