UTF-7, UTF-8, UTF-16 i UTF-32 są po prostu algorytmami formatów transformacji tego samego kodowania (punktów kodowych ) znaków. Są kodowaniem jednego systemu kodyfikacji znaków.
Są one również algorytmicznie łatwiejsze w nawigacji do przodu i do tyłu niż większość poprzednich schematów do obsługi zestawów znaków większych niż 256 znaków.
Jest to bardzo odmienne niż ogólnie kodyfikacja glifów w zależności od kraju, a czasem i dostawcy. W samej Japonii istniało mnóstwo odmian samego JIS, nie wspominając już o EUC-JP i transformacji JIS zorientowanej na stronę kodową, z której korzystały maszyny DOS / Windows o nazwie Shift-JIS. (Do pewnego stopnia miały miejsce ich algorytmiczne przekształcenia, ale nie były one szczególnie proste i występowały różnice w znakach specyficzne dla dostawcy. Pomnóż to przez kilkaset krajów i stopniową ewolucję bardziej wyrafinowanych systemów czcionek (po ekranie zieleni) era), a ty miałeś prawdziwy koszmar.
Po co ci te formy transformacji Unicode? Ponieważ wiele starszych systemów zakładało sekwencje 7-bitowych znaków ASCII, więc potrzebne było 7-bitowe czyste rozwiązanie bezpiecznie przepuszczające dane bez zakłóceń przez te systemy, więc potrzebny był UTF-7. Potem były bardziej nowoczesne systemy, które mogły radzić sobie z 8-bitowymi zestawami znaków, ale wartości null miały dla nich specjalne znaczenie, więc UTF-16 nie działał dla nich. 2 bajty mogłyby zakodować całą podstawową wielojęzyczną płaszczyznę Unicode w swoim pierwszym wcieleniu, więc UCS-2 wydawał się rozsądnym podejściem do systemów, które od samego początku będą „rozpoznawały Unicode” (jak Windows NT i Java VM); potem rozszerzenia poza tym wymagały dodatkowych znaków, co spowodowało algorytmiczną transformację kodowań o wartości 21 bitów zarezerwowanych przez standard Unicode i powstały pary zastępcze; wymagało to UTF-16. Jeśli miałeś jakieś zastosowanie, w którym spójność szerokości znaków była ważniejsza niż wydajność pamięci, opcja UTF-32 (kiedyś nazywana UCS-4) była opcją.
UTF-16 jest jedyną rzeczą, z którą zdalnie trudno sobie poradzić, i którą łatwo złagodzić niewielki zakres znaków, na który wpływa ta transformacja, oraz fakt, że wiodące 16-bitowe sekwencje znajdują się w całkowicie innym zakresie niż końcowy 16-bitowe sekwencje. To także światy łatwiejsze niż przesuwanie się do przodu i do tyłu w wielu kodowaniach wczesnoazjatyckich, gdzie albo potrzebowałeś maszyny państwowej (JIS i EUC), aby poradzić sobie z sekwencjami ucieczki, lub potencjalnie cofnąłeś kilka postaci, aż znajdziesz coś, co było gwarantowane być tylko wiodącym bajtem (Shift-JIS). UTF-16 miał również pewne zalety w systemach, które potrafiłyby również wydajnie przeszukiwać 16-bitowe sekwencje.
Chyba że musiałeś przeżyć dziesiątki (setki, naprawdę) różnych kodowań lub zbudować systemy obsługujące wiele języków w różnych kodowaniach, czasem nawet w tym samym dokumencie (np. WorldScript w starszych wersjach MacO), możesz pomyśleć formatów transformacji Unicode jako niepotrzebną złożoność. Ale to znacznie zmniejsza złożoność w porównaniu z wcześniejszymi alternatywami, a każdy format rozwiązuje prawdziwe techniczne ograniczenie. Są również bardzo wydajnie konwertowane między sobą, nie wymagając skomplikowanych tabel odnośników.