Porządki w kodowaniu znaków w SZARP-ie

W minionym półroczu SZARP przeszedł gruntowne porządki związane z kodowaniem znaków. Rzecz pozornie bez znaczenia dla zwykłego użytkownika, ale w praktyce jednak nader często doskwierająca. O co chodzi?

Oprogramowanie SZARP jest aktywnie rozwijane już od przeszło 20 lat i co za tym idzie z pewnością znajdziemy w nim fragmenty kodu napisane te kilkanaście lat temu. W tamtym czasie do kodowania znaków narodowych (których w języku polskim nie brakuje) stosowano szereg rozproszonych standardów opisanych w normie ISO/IEC_8859. Rok 2006 przyniósł istotną zmianę – do użytku zaczął wchodzić, dziś powszechnie używany, jednolity system kodowania UTF-8 (implementujący standard Unicode). W czym rzecz? Przecież SZARP wspiera i używa kodowania UTF-8 nie od wczoraj.

Otóż nie do końca – okazało się, że w zadziwiająco wielu miejscach kodowanie Latin-2 (ISO 8859-2) było albo wpisane „na sztywno” albo uznawane za domyślne (dekadę wcześniej wydawało się to właściwe). W szczególności dotyczyło to modułu odpowiadającego za konwersję pomiędzy różnymi kodowaniami. Stąd „krzaki” w napisach wychodziły tu i ówdzie przy różnych okazjach. I dlatego należało tę kwestię uporządkować.

Wprowadzone zmiany nie były znaczące ilościowo, bo zamknęły się w zaledwie kilkuset liniach kodu, ale poprawiane funkcje konwersji są używane przez niemal każdą część SZARP-a. Z tego powodu wszelkie modyfikacje musiały być wprowadzane ostrożnie i potem starannie testowane. Mimo zachowania tych zasad kilka błędów się przemknęło i ujawniło kilka miesięcy później.

W tej chwili, po pół roku pracy i testowania poprawionej wersji SZARP-a na serwerach i terminalach, możemy ogłosić, że SZARP w pełni wspiera kodowanie UTF-8.