Kody - kością niezgody

Obecnie dwa standardy aspirują do zajęcia pozycji międzynarodowego systemu kodów, zawierającego wszystkie możliwe znaki wszystkich alfabetów świata. Dojdzie do kolizji - czy porozumienia?

Obecnie dwa standardy aspirują do zajęcia pozycji międzynarodowego systemu kodów, zawierającego wszystkie możliwe znaki wszystkich alfabetów świata. Dojdzie do kolizji - czy porozumienia?

Świat się kurczy. W dziedzinie informatyki również. W rezultacie coraz bardziej odczuwamy niewystarczalność kodów ASCII (American Standard Code for Information Interchange) - systemu, który jest podstawą całej komunikacji pomiędzy komputerowym hardwarem i softwarem oraz światem zewnętrznym. Każdy z kodów ASCII (składający się z 7 bitów) reprezentuje literę z alfabetu (od a do z - duże i małe), cyfrę, znaki interpunkcyjne lub instrukcję do kontroli wyposażenia peryferyjnego (drukarki, modemu itp.). W kodzie 7 - bitowym, w tablicy ASCII było miejsce dla 128 znaków. W 1977r. ASCII zdobyło certyfikat ANSI (American National Standards Institute). ISO natomiast (International Standards Organization) - podobna organizacja w Europie, przyjęła prawie identyczny system pod nazwą ISO 646. Później do ISO 646 dodano 1 bit, powiększając tablicę kodów do 256 znaków. System ten znany jest jako Latin 1 i zawiera również znaki diakrytyczne niektórych języków europejskich (francuski, niemiecki, hiszpański).

Akronim "ASCII" używany jest często - niezgodnie z prawdą - do określania 8-bitowego systemu kodów, podczas gdy "prawdziwy" ASCII jest systemem 7-bitowym. Kraje afrykańskie, Bliski i Daleki Wschód, adaptują z reguły ISO 646 do swoich lokalnych potrzeb lub rozwijają podobne standardy pod auspicjami grup takich, jak: ECMA (European Computer Manufacturers Association) i JISC (Japanese Industrial Standards Committee). Obecnie do wspólnej reprezentacji tysięcy znaków w systemach alfabetycznych Dalekiego Wschodu zmierza jednocześnie kilkanaście standardów. Swoje własne standardy rozwijają również producenci hardware'u i software'u. Dla przedsiębiorców, prowadzących interesy w skali międzynarodowej, istnienie tak wielkiej liczby różnych standardów staje się sennym koszmarem. W 1983 roku ISO rozpoczęła rozwijanie nowego standardu do kodowania znaków, nazywanego odtąd ISO 10646. W założeniach był to 2-bajtowy (16-bitowy) system kodowania z miejscem na 65536 znaków. Jest to z pewnością więcej, niż kiedykolwiek zmuszeni bylibyśmy używać. Również ANSI pracuje nad nowym 16-bitowym systemem i ma nadzieję, że uczyni go zgodnym ze wszystkimi obecnie używanymi standardami międzynarodowymi. Pierwsze 128 znaków odpowiadać ma "staremu" ASCII. Pozostałe znaki powinny następować po nich. Rodzi to jednak wiele problemów. Pierwszy - co uczynić ze znakami, które kontrolują pracę urządzeń peryferyjnych? Przestawienie ich na inne miejsce w tablicy kodów nie pozwoli spełnić warunku kompatybilności. Problem rozwiązano w ten sposób, że dla tych wszystkich znaków, które mogłyby być interpretowane jako kody kontrolne, przeznaczono 40% miejsca na początku tablicy kodów.

Drugi problem jest o wiele bardziej skomplikowany. Chodzi bowiem o dalekowschodnie systemy językowe (Chiny, Korea, Japonia). W krajach tych używa się co prawda systemów alfabetycznych, jednak równocześnie ogromna liczba znaków występuje w postaci pikto- i ideogramów. Do Japonii i Korei dużo znaków przybyło z Chin w czasach dynastii Han (panującej od 206 p.n.e. do 220 n.e. Na ten właśnie okres przypada tu wszechstronny rozwój sztuki, nauki i piśmiennictwa. Wiele z owych znaków nie tylko podobnie lub identycznie wygląda, lecz ma takie samo znaczenie we wszystkich trzech systemach językowych. Komitet opracowujący standard ISO 10646 usiłował ujednolicić system Han i zarezerwować dlań miejsce w tablicy kodów. Niespodziewanie napotkano jednak na opór Korei i Japonii. Próbowano wybrnąć z tego impasu proponując rozszerzenie systemu kodowania do 4 bajtów (32 bitów). W tej tablicy byłoby miejsce na ponad 4 biliony znaków. Część komputerowców wyraża jednak pewne obawy dotyczące czterokrotnego wydłużenia czasu transmisji zbiorów tekstowych - cztery bajty zamiast jednego do oznaczenia jednego znaku! Komitet ISO zaproponował więc, aby w przypadku znaków alfabetycznych trzy pierwsze bajty kodu były takie same i nie musiały być transmitowane z każdym znakiem. Litera "n" w kodzie ASCII wygląda tak: 01101110. W ISO 10646 będzie wyglądać tak samo, lecz poprzedzona trzema bajtami w postaci 00100000, a więc: 00100000 00100000 00100000 01101110. W kodzie 8-bitowym znak 00100000 odpowiada spacji. Nie wskazane byłoby zastąpienie go samymi zerami, ponieważ znak 00000000 jest w ASCII kodem kontrolnym "nul". W przypadku wywołania np. modemu pierwsza instrukcja ostrzega: "uwaga, od tej chwili 3 pierwsze bajty są identyczne", a następnie rozpoczyna się właściwa transmisja danych - w postaci zwykłych kodów ASCII - z pominięciem trzech pierwszych bajtów. Koncepcja ta ma jednak przeciwników, którzy uważają, że każdy znak powinien mieć jednakową długość. W 1987 roku grupa składająca się z pracowników Xerox Palo Alto Research Center i Apple postanowiła opracować 16-bitowy system, który byłby prostszy i bardziej spójny niż ISO 10646 oraz zawierał jednocześnie wszystkie niezbędne w komunikacji informatycznej znaki. Nazwano go UNICODE (Unique Universal and Uniform Character Encoding). Według twórców powinien on być prosty, sprawny, uniwersalny i jednoznaczny. W celu zachowania zgodności z systemem ASCII zarezerwowano w tablicy znaków miejsce na początkowe kody kontrolne ASCII, jednak nie używając zgodnie z dotychczasowym przeznaczeniem znaków systemu UNICODE wygląda następująco:

budowa tablicy

0-8191 - miejsce na kody kontrolne ASCII oraz na wszystkie znaki alfabetyczne z całego świata

8192-12287 - znaki interpunkcji, operatory i symbole matematyczne, symbole techniczne

12288-16383 - znaki i interpunkcja systemów alfabetycznych: chińskiego, japońskiego i koreańskiego

16384-59391 - ujednolicony zbiór piktogramów i ideogramów systemu Han

59352-65024 - miejsce zarezerwowane dla uzupełnień dokonywanych przez indywidualnych użytkowników

65025-65536 - "obszar kompatybilności" - pomocny przy dokonywaniu konwersji do i ze standardu UNICODE.

Przyjęcie UNICODE oznaczałoby występowanie dwóch standardów, które różnią się wyraźnie między sobą:

ISO 10646 koduje znaki w systemie 4-bajtowym (jednak dzięki metodom zwijania umożliwia posługiwanie się zbiorami 1, 2 i 3-bajtowymi). Nie narzuca przy tym krajom Dalekiego Wschodu konieczności unifikacji ich systemów piśmienniczych, rezerwuje miejsce dla kodów kontrolnych z systemów pochodnych od systemu ASCII, a także dla osobnych znaków liter akcentowanych.

W przeciwieństwie do ISO 10646, UNICODE koduje znaki w systemie 2-bajtowym, narzucając krajom Dalekiego Wschodu unifikację systemu Han. Rezerwuje 65 miejsc na kody kontrolne z systemu ASCII, a litery akcentowane są kombinacją akcentów i liter.

Oba systemy w odmienny sposób realizują odwrotny kierunek pisowni (arabski, hebrajski).

Autorzy, opracowujący oba standardy mają nadzieję, że po ich dopracowaniu łatwiej będzie sprzedawać systemy na rynkach międzynarodowych.

Poza oczywistymi korzyściami płynącymi z posiadania ujednoliconego standardu należy wziąć pod uwagę cenę, jaką przyjdzie zapłacić za przepisanie starego oprogramowania. Szacuje się, że kodowanie znaków w systemie wielobajtowym będzie wymagało o około 10-20% więcej miejsca w pamięci RAM i na twardym dysku. Sytuacja nie jest jeszcze klarowna - wiele krajów, zwłaszcza europejskich, popiera ISO 10646. USA skłonne byłyby widzieć u siebie raczej UNICODE. Zaproponowano dwa sposoby pogodzenia ze sobą obu standardów: pierwszy - wbudowanie systemu UNICODE jako podzbioru ISO 10646; drugi - zgodnie z propozycją ECMA - rozwiązanie problemów spornych i zmodyfikowanie ISO 10646. Twórcy obu standardów zgodnie twierdzą, że bariery piętrzące się przed opracowaniem jednego powszechnie obowiązującego standardu są natury raczej ekonomicznej, kulturowej i politycznej niż technicznej. Generalnie - jak twierdzą - lepiej byłoby posiadać jeden wspólny standard niż dwa różne. Z drugiej jednak strony, lepiej jest mieć dwa standardy niż ogromną liczbę kodów, jak to ma miejsce obecnie.

Zbliża się dzień, gdy korporacje zajmujące się softwarem będą musiały przygotować system, który można by sprzedawać w Europie, Ameryce, Japonii lub Chinach, bez dodatkowych modyfikacji poza dołączeniem doń zawartości tekstowej.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200