Polskie litery na serwerach WWW

Koniec świętych wojen

Problem z polskimi literami pod WWW stwarzają tylko Ci administratorzy serwerów, co jeszcze nie zauważyli, że "święte wojny" o wyższość jednego "standardu" kodowania nad innym "standardami" już się skończyły.

Stało się to dzięki temu, że wszystkie nowsze przeglądarki WWW pod MS Windows potrafią wyświetlić tekst zakodowany w ISO (po pobraniu konwertują go na wewnętrzną reprezentację MS Windows - CP1250). Tak więc jeśli pod WWW udostępnisz tekst z literami w ISO, to przeczyta go każdy - a gdy w CP1250, to tylko część użytkowników. Tak wiec, jeśli dostarczycielowi informacji zależy na tym żeby informacje prezentowane na jego serwerze były powszechnie dostępne, to wybór jest prosty: stosować kodowanie standardowe, czyli ISO-8859-2.

Jeśli czemuś nie jesteś przekonany i nadal znajdujesz z 17 powodów dla których standard jest niedobry, to koniecznie przeczytaj ten tekst.

Jak przejść na ISO?

Co zrobić gdy do tej pory stosowałeś na swoim serwerze kodowanie Windows?

Możesz skorzystać z programu wwwfixpl - przekoduje wszystkie teksty na Twoim serwerze z CP1250 do ISO, a co więcej, bedziesz mogł ten program uruchamiać wielokrotnie - przy kolejnych uruchomieniach przekodowane zostaną tylko te teksty, które będą zakodowane w CP1250.

Uzupełni także (opcjonalnie) tekst o informację o stosowanym charsecie w postaci tagu META.


Sprowadza się to wszystko do tego, że udostępniając jakieś informacje w WWW musisz zadbać, by:

  1. polskie litery w tekście były zakodowane w standardzie ISO-8859-2;
  2. dla dokumentów z polskimi literami był podany tzw. charset dokumentu.

Charset można podać:


Jeśli zaś uznasz każdorazowe uruchamianie programu przekodowującego za zbyt kłopotliwe a Twoje narzędzia/środowisko do tworzenia stron WWW zapisuje wyłącznie w CP1250, to przekodowywanie do ISO możesz wbudować bezpośrednio w serwer - patrz ponizej.

Serwer może także przekodowywać w drugą stronę - wysyłając broserom WWW tekst przekodowany np. do CP1250, ale od tego rozwiązania już się odchodzi - jest niepotrzebne gdy przekodowywać umieją browsery a tylko niepotrzebnie wprowadza kłopoty.

Wszystkie opisane poniżej rozwiązania to serwery pracujące w systemie Unix - poprawiane bezpośrednio w źródłach. W świecie Microsoft Windows jak na razie jedynie Microsoft zadeklarował się, że jego Internet Information Server potrafi przekodowywać, ale nie znam żadnych szczegółów.


Beza

Modyfikacja zrealizowana jest w oparciu o ciekawy pomysł i jest bardzo starannie przygotowana - modyfikacja oryginalnego serwera sprowadza się do rozpakowania archiwum, wydania komendy patch, rekompilacji i dodaniu jednej linijki do pliku konfiguracyjnego. Paczkę przygotowaną przez autora - Krzysztofa Marka Matyskiela <K.Matyskiel@ia.pw.edu.pl> znajdziesz tutaj.

Dla serwerów obsługujących bardzo duży ruch, znaczącą wadą Bezy może być dodatkowe obciążenie wnoszone przez redirecty URL'i absolutnych na takie, w których występuje człon "/Pl-xxx/".

Przykładowy serwer używający Bezy to: Politechnika Warszawska.

Beza light

Prostsza wersja Bezy - działa jedynie w oparciu o mechanizm cookie, potrafi też określać kodowanie docelowe w oparciu o rodzaj klienta WWW. Niestety do prawidłowego działania wymaga by nie było stosowane w3cache.

Nie ma natomiast żadnych problemów w stosowaniu funkcji przekodowywania z CP1250->ISO - Beza light przyda Ci sie, jeśli koniecznie musisz na serwerze trzymać pliki zakodowane w CP1250 (bo np. edytujesz je z PC jakimiś starymi edytorami HTML'a).

Beza light w odróżnieniu od Bezy nie wprowadza zauważalnych opóźnień po stronie klienta jak i praktycznie nie zwiększa obciążenia serwera.

Beza light może ustawiać charset dokumentu dla wszystkich dokumentów w serwerze, tylko dla wybranych katalogów, lub dla wszystkich z pominięciem podanych katalogów.

Źródła Bezy light, wraz z opisem, znajdziesz tutaj

PL10

(Jacek Nowicki złośliwie traktuje w swoim programie kodowanie standardowe jako najmniej znaczacy ze "standardów" kodowania - umieszcza go na ostatniej, dziesiątej pozycji w liście)

Do przekodowywania przystosowany też został serwer NCSA 1.4. Modyfikację wykonał Jacek Nowicki i używa na serwerze Polska On Line.

Autor jeszcze nie udostępnia źródeł - powiedział że udostępni jak doszlifuje, ale wszystko wskazuje na to, że od dłuższego czasu nic przy tym nie robi.
W tym rozwiazaniu konwersji poddawane są nie tylko polskie litery ale cale teksty - w szczegolności przepisywane są także URL'e. Rozwiązanie stsosowane w Bezach unika przepisywania i jako takie jest potencjalnie bardziej niezawodne (nie ma możliwości że autor przeoczy jakiś niuans składniowy w HTML'u).


Skrypty przekodowujące

Do niedawna było to rozwiązanie dość często stosowane na polskich serwerach WWW - teraz jest już archaiczne i niepotrzebne.

Chyba najdoskonalszym programem tego typu był: plconv-cgi.


JS