UTF-7, UTF-8, UTF-16 і UTF-32 просто алгоритмічні формати трансформації одного і того ж кодування (кодових символів). Вони - кодування однієї системи кодифікації символів.
Вони також алгоритмічно простіше орієнтуватися вперед і назад, ніж у більшості попередніх схем роботи з наборами символів, що перевищують 256 символів.
Це дуже відрізняється від кодифікації гліфів, характерних для країни, а іноді і для конкретного продавця. Тільки в японській мові було багато варіантів JIS, не кажучи вже про EUC-JP та трансформацію JIS, орієнтовану на кодову сторінку, яку машини DOS / Windows використовували під назвою Shift-JIS. (До певної міри були алгоритмічні перетворення цих, але вони не були особливо простими, і існували особливі для продавця розбіжності в наявних символах. Помножте це на пару сотень країн та поступову еволюцію більш досконалих систем шрифту (пост зелений екран епохи), і у вас був справжній кошмар.
Навіщо вам потрібні ці форми перетворення Unicode? Оскільки багато застарілих систем передбачають послідовності 7-бітових символів діапазону ASCII, тож вам знадобилося 7-бітове чисте рішення, щоб безпечно передавати дані без пошкоджень через ці системи, тож тоді вам знадобився UTF-7. Тоді були більш сучасні системи, які могли мати справу з 8-бітовими наборами символів, але нулі, як правило, мали для них особливі значення, тому UTF-16 не працював на них. 2 байти могли кодувати всю основну багатомовну площину Unicode в першому її втіленні, тому UCS-2 здавався розумним підходом для систем, які повинні були бути "Unicode відомі з нуля" (як Windows NT та Java VM); то розширення поза цим вимагає додаткових символів, що призвело до алгоритмічного перетворення коду вартістю 21 біт, який було зарезервовано стандартом Unicode, і народилися сурогатні пари; що вимагало UTF-16. Якщо у вас було якесь застосування, де узгодженість ширини символів була важливішою, ніж ефективність зберігання, UTF-32 (колись називався UCS-4) був варіантом.
UTF-16 - це єдине, з чим важко вирішити проблему, і це легко пом'якшується невеликим діапазоном символів, які впливають на це перетворення, і тим, що ведучі 16-бітні послідовності акуратно знаходяться в абсолютно різному діапазоні від трейлінгу 16-бітні послідовності. Це також простіші світи, ніж намагатися рухатися вперед і назад у багатьох ранніх східно-азіатських кодуваннях, де вам або потрібна була державна машина (JIS і EUC) для боротьби з послідовностями втечі, або потенційно переміщувати кілька символів, поки ви не знайдете щось гарантоване бути лише провідним байтом (Shift-JIS). UTF-16 також мав деякі переваги в системах, які могли ефективно проконтролювати 16-бітові послідовності.
Якщо б вам не довелося пережити десятки (сотні, справді) різних кодувань там, або не довелося будувати системи, що підтримують кілька мов у різних кодуваннях, іноді навіть в одному документі (як WorldScript у старих версіях MacOs), ви можете подумати форматів перетворення унікоду як непотрібної складності. Але це різке зниження складності в порівнянні з попередніми альтернативами, і кожен формат вирішує реальну технічну обмеженість. Вони також дуже ефективно конвертуються між собою, не вимагаючи складних таблиць пошуку.