В чём разница между ASCII и Unicode простыми словами?
Знаю про ASCII, теперь везде пишут про Unicode и UTF-8. Не пойму, в чём между ними разница и зачем понадобился Unicode, если ASCII вроде и так работал. Это что, разные таблицы кодов?
2 ответа
ASCII придумали под английский: 128 кодов (7 бит). Этого хватает на латиницу и знаки, но не хватает на русские, китайские, арабские буквы, эмодзи и т.д. — символов в мире десятки тысяч.
Unicode — это огромная таблица, куда внесли символы практически всех языков мира (там больше миллиона возможных кодов-позиций). Первые 128 кодов совпадают с ASCII, чтобы старый текст не сломался.
UTF-8 — это уже способ записать коды Unicode в байты. В нём латиница (ASCII-символы) занимает 1 байт, а более «экзотические» символы — 2, 3 или 4 байта. Так что Unicode — это «что кодируем» (набор символов), а UTF-8 — «как это упаковать в байты».
Короткая аналогия: Unicode — это словарь, где у каждого символа мира есть свой номер. UTF-8, UTF-16 — разные способы записать этот номер байтами. Поэтому один и тот же символ в UTF-8 и UTF-16 может занимать разное число байт, хотя его «номер» в Unicode одинаковый.