Какво представляват кодирането на знаци Подобно на ANSI и Unicode и как се различават?
ASCII, UTF-8, ISO-8859… Може да сте видели тези странни псевдоними, които плават наоколо, но какво всъщност означават? Прочетете, докато обясняваме какво е кодирането на символи и как тези съкращения се отнасят до обикновения текст, който виждаме на екрана.
Основни строителни блокове
Когато говорим за писмен език, ние говорим за писма, които са градивни елементи на думи, които след това изграждат изречения, параграфи и т.н. Буквите са символи, които представляват звуци. Когато говорите за език, вие говорите за групи звуци, които се събират, за да образуват някакъв смисъл. Всяка езикова система има сложен набор от правила и определения, които управляват тези значения. Ако имате дума, това е безполезно, освен ако не знаете от кой език е и от какъв език го използвате.
(Сравнение на скриптове на Гранта, Тулу и малаялам, изображение от Уикипедия)
В света на компютрите ние използваме термина "характер". Характерът е нещо като абстрактна концепция, дефинирана от специфични параметри, но тя е основната единица на смисъла. Латинското 'A' не е същото като гръцката 'alpha' или арабска 'alif', защото те имат различен контекст - те са от различни езици и имат малко по-различно произношение - така можем да кажем, че те са различни герои. Визуалното представяне на знака се нарича "глиф", а различните набори от глифове се наричат шрифтове. Групи от символи принадлежат към „набор“ или „репертоар“.
Когато въведете абзац и промените шрифта, не променяте фонетичните стойности на буквите, променяте начина, по който изглеждат. Това е просто козметично (но не маловажно!). Някои езици, като древните египетски и китайски, имат идеограми; те представляват цели идеи вместо звуци и произношенията им могат да варират във времето и разстоянието. Ако замените един символ с друг, замествате идея. Това е повече от просто смяна на писма, това променя идеограма.
Кодиране на знаци
(Изображение от Уикипедия)
Когато пишете нещо на клавиатурата или зареждате файл, как компютърът знае какво да покаже? За това е кодирането на знаците. Текстът на компютъра всъщност не е буква, а серия от двойки буквено-цифрови стойности. Кодирането на знаци действа като ключ, за който стойностите съответстват на кои символи, подобно на това как орфографията диктува кои звуци съответстват на кои букви. Морзовата азбука е нещо като кодиране на знаци. Той обяснява как групите от дълги и къси единици като звуковите сигнали представляват символи. В Морз код, знаците са само английски букви, цифри, и пълен стоп. Има много кодови символи на компютъра, които се превеждат на букви, цифри, акценти, препинателни знаци, международни символи и т.н..
Често по тази тема се използва и терминът "кодови страници". Те са по същество кодировки на знаци, използвани от конкретни компании, често с леки изменения. Например кодовата страница на Windows 1252 (известна като ANSI 1252) е модифицирана форма на ISO-8859-1. Те се използват най-вече като вътрешна система за отнасяне към стандартни и модифицирани кодови символи, които са специфични за същите системи. В началото кодирането на знаци не беше толкова важно, защото компютрите не комуникираха помежду си. Тъй като интернет се издига до известна степен, а работата в мрежа е често срещано явление, тя става все по-важна за нашия ежедневен живот, без дори да го осъзнаваме.
Много различни типове
(Изображение от sarah sosiak)
Има много различни кодировки на символи там и има много причини за това. Кое кодиране на символи, което избирате да използвате, зависи от вашите нужди. Ако общувате на руски, има смисъл да използвате кодиране на символи, което поддържа кирилица добре. Ако общувате на корейски, тогава ще искате нещо, което представлява хангул и ханджа. Ако сте математик, тогава искате нещо, което има всички научни и математически символи, представени добре, както и гръцките и латински символи. Ако сте шегаджия, може би ще имате полза от обърнат текст. И ако искате всички тези типове документи да се виждат от дадено лице, искате кодиране, което е доста често срещано и лесно достъпно.
Нека да разгледаме някои от най-често срещаните.
(Извадка от ASCII таблицата, изображение от asciitable.com)
- ASCII - Американският стандартен код за обмен на информация е един от по-старите кодови символи. Първоначално той е бил създаден въз основа на телеграфни кодове и е еволюирал с течение на времето, за да включва повече символи и някои остарели непечатани контролни знаци. Вероятно е толкова основно, колкото можете да получите от гледна точка на модерните системи, тъй като е ограничено до латинската азбука без знаци с ударение. Неговото 7-битово кодиране позволява само 128 символа, поради което има няколко неофициални варианта, които се използват по целия свят.
- ISO-8859 - Най-широко използваната група кодировки на символи на Международната организация за стандартизация е номер 8859. Всяко специфично кодиране е обозначено с число, често предшествано от описателен псевдоним, напр. ISO-8859-3 (Latin-3), ISO-8859-6 (латински / арабски). Това е надмножество на ASCII, което означава, че първите 128 стойности в кодирането са същите като ASCII. Той обаче е 8-битов и позволява 256 символа, така че се изгражда от там и включва много по-широк набор от символи, като всяко специфично кодиране се фокусира върху различен набор от критерии. Latin-1 включваше куп букви и символи с ударение, но по-късно беше заменен с преработен комплект, наречен Latin-9, който включва актуализирани глифове като символа за евро..
(Откъс от тибетски скрипт, Unicode v4, от unicode.org)
- Unicode - Този стандарт за кодиране цели универсалност. В момента той включва 93 скрипта, организирани в няколко блока, с много повече в работата. Unicode работи по различен начин от други набори от символи, тъй като вместо директно кодиране за глиф, всяка стойност се насочва по-нататък към „кодова точка“. , като например уеб браузъра ви. Тези кодови точки обикновено се изобразяват по следния начин: U + 0040 (което се превежда като „@“). Специфичните кодировки под Unicode стандарта са UTF-8 и UTF-16. UTF-8 се опитва да осигури максимална съвместимост с ASCII. Това е 8-битов, но позволява за всички символи чрез механизъм за заместване и няколко двойки стойности на символ. UTF-16 се гмурка перфектна ASCII съвместимост за по-пълна 16-битова съвместимост със стандарта.
- ISO-10646 - Това не е действително кодиране, а само набор от символи на Unicode, който е стандартизиран от ISO. Това е най-важното, защото репертоарът на героите се използва от HTML. Липсват някои от по-разширените функции, предоставени от Unicode, които позволяват сортиране и отдясно наляво, заедно със скриптове от ляво на дясно. Все пак, той работи много добре за използване в интернет, тъй като позволява използването на голямо разнообразие от скриптове и позволява на браузъра да интерпретира глифовете. Това прави локализацията малко по-лесна.
Какво кодиране трябва да използвам?
Ами ASCII работи за повечето английски, но не и за много други неща. По-често ще виждате ISO-8859-1, който работи за повечето западноевропейски езици. Другите версии на ISO-8859 работят за кирилица, арабски, гръцки или други специфични скриптове. Ако обаче искате да покажете няколко скрипта в един и същи документ или на същата уеб страница, UTF-8 позволява много по-добра съвместимост. Също така работи много добре за хора, които използват правилни препинателни знаци, математически символи или символи за маншети, като квадратчета и квадратчета за отметки.
(Няколко езика в един документ, снимка на gujaratsamachar.com)
Има обаче и недостатъци на всеки комплект. ASCII е ограничен в препинателните знаци, така че не работи невероятно добре за типографски правилни редакции. Някога типи копие / постави от Word само, за да има някаква странна комбинация от глифове? Това е недостатъкът на ISO-8859, или по-правилно, предполагаемата му оперативна съвместимост със специфични за операционната система кодови страници (разглеждаме ВАС, Microsoft!). Основният недостатък на UTF-8 е липсата на подходяща поддръжка при редактирането и публикуването на приложения. Друг проблем е, че браузърите често не интерпретират и просто показват маркировката на байтовия ред на кодиран символ UTF-8. Това води до появата на нежелани глифи. И, разбира се, обявяването на кодиране и използването на символи от друг, без да ги декларирате / препращате правилно на уеб страница, затруднява браузърите да ги направят правилно и търсачките да ги индексират по подходящ начин.
За вашите собствени документи, ръкописи и т.н. можете да използвате каквото ви е необходимо, за да свършите работата. Що се отнася до мрежата, обаче, изглежда, че повечето хора се съгласяват да използват UTF-8 версия, която не използва марка за байта, но това не е съвсем единодушно. Както виждате, всяко кодиране на знаци има своя собствена употреба, контекст и силни и слаби страни. Като краен потребител вероятно няма да се налага да се справяте с това, но сега можете да направите допълнителна стъпка напред, ако го изберете.