Някога преглеждали страница и се чудили какво означава‹meta charset=”utf-8'›? Или видяхте, че „utf-8“ е отметнато във вашите параметри, когато сте в byebug/pry и се чудехте какво е това?

UTF-8 всъщност е НАИСТИНА важно.

Компютрите естествено не говорят човешките езици, които говорят програмистите. Компютърът е създаден с помощта на „транзистори, които проследяват кога електроните се движат навътре или извън“ пространството. Ако има движещи се електрони, компютърът мисли „включено“ — представено с 1; ако не присъства, компютърът смята „изключено“ — представено от 0. Компютърът запомня тази информация в бит, или 1, или 0. Ако групирате тези 1s и 0s заедно в набори от 8, можете да използвате тези групи, за да представите числа, букви и други символи, които хората разпознават. 8 бита, групирани заедно, се наричат ​​байт; половин байт се нарича хапка.

Американците изобретиха доста добра система, използваща 8 бита за представяне на английските букви, цифри и символи — наречена ASCII , произнася се as-kee и означава американски стандартен код за обмен на информация. В ASCII двоичен код английската буква „A“ е представена като 0100 0001. „B“ ще бъде 0100 0010, „C“ ще бъде 0100 0011 и т.н.

Можете да вземете тези осем 1 и 0, да ги разделите на хапки и да ги преименувате, като използвате шестнадесетични знаци. Това спестява мозъчно пространство (след като разберете шестнадесетични числа) и е по-малко объркващо при въвеждане.

И така, в шестнадесетичен "A" ще бъде 41, "B" ще бъде 42, "C" ще бъде 43 и т.н.

ASCII успя да кодира повечето знаци за английски програми и уеб страници, но какво ще стане, ако искате да получите достъп до данни, кодирани със знаци от испански, френски, корейски, иврит, китайски, руски, тайландски, дари, сръбски?! Е, американците присвоиха някои шестнадесетични знаци на тези знаци, но след това, разбира се, чуждестранните програмисти бяха създали свои собствени кодове за техните родни букви и символи. Така светът имаше стотици различни системи за тълкуване на едни и същи символи и повечето от тях бяха несъвместими една с друга.

Това очевидно беше проблем, но НАИСТИНА се превърна в проблем, когато интернет се превърна в нещо и програмите с всички тези различни езикови кодировки започнаха да взаимодействат помежду си. Имахме имейли и уеб страници, които не показваха правилно чужди знаци, защото имаше толкова много различни и несъвместими системи за интерпретиране на битове в знаци.

Въведете Unicode! Някои наистина умни, влиятелни хора се събраха (известни като Unicode Consortium) и начертаха система, в която присвоиха уникален шестнадесетичен знак или кодова точказа всеки знак в света. Например буквата „A“ в Unicode е U-0041. U означава Unicode, останалите четири цифри са шестнадесетични. Много сладко! Решихме проблема, нали?

Уви, стана по-сложно, защото дори ако повечето английски символи могат да се поберат в 8 бита, не всеки знак ще го направи, като наистина голямо число или сложен китайски или друг чужд знак (вижте последния ред в диаграмата по-долу). Някои от тях ще трябва да бъдат разделени на 2 до 6 байта. Това е много 1s и 0s... и също си струва много памет.

И тогава има друг проблем! Някои процесори кодират серии от шестнадесетични знаци в една посока, а други видове процесори ги кодират в обратна посока! Така че, ако трябва да използвате знаци, които обхващат няколко байта, освен ако не кажете на вашия компютър да прочете реда в определен ред, компютърът ще прочете реда от байтове в неправилен ред в зависимост от своя процесор! Добре. Скръб. Бяхме толкова близки с това нещо с Unicode. Обединяването на хората е трудно.

Очевидно, ако искахме да имаме функционална глобална световна мрежа, беше необходима повече универсализация. Следователно, UTF-8!

UTF-8 е глобалният стандарт за комуникация между уеб програми. Съществуват и други UTF (UTF-7, UTF-16 и UTF-32), но тези други системи не са толкова универсално съвместими или щадящи паметта като UTF-8. От 2009 г. UTF-8 е насърчаваният стандарт в мрежата и от миналия месец 92,5% от всички уеб страници вече използват UTF-8.

UTF означава Unicode Transformation Format и „8“ се отнася до броя битове на единица. UTF-8 използва стандарта Unicode за присвояване на уникална кодова точка за всеки символ (споменати по-горе). За онези знаци, които се нуждаят от повече от 8 бита, той ги разпределя на дължина от 2–4 бита и използва стандартни префикси за четене, когато битовете са разпределени на 2 или повече байта. В UTF-8 не е нужно да се притеснявате, че вашият процесор чете байтове в „различен ред“, както правят в UTF-16. UTF-8 е толкова мощен, че има място за над 1,1 милиона знака и заема по-малко памет от UTF-16 или UTF-32!

Писащите на английски програмисти харесват особено тази система, защото... помните ли ASCII (като — kee)? ASCII всъщност вече е кодирал английски знаци в 8-битова система. И създателите на UTF-8 запазиха ASCII конвенциите за първите 128 знака, които са им достъпни. Това означава, че UTF-8 е обратно съвместим с всички онези английски ориентирани американски програми там — те ВСЕ ОЩЕ РАБОТЯТ в системата за кодиране на UTF-8! Останалият свят трябва да модифицира някои неща… но хей, това поне означава по-малко работа за един език с много уеб присъствие.

UTF-8 е страхотен! Чудесно е! Това е обединяващият език за кодиране на знаци в мрежата. Ура наука! Обединяване на хората.

— — —

За по-подробни обяснения вижте моите източници:

https://www.youtube.com/watch?v=MijmeoH9LT4