Nejlepší odpověď
Ostatní odpovědi nejsou úplně správné.
Unicode , je pravda, obsahuje seznam znaků téměř ze všech světových skriptů. Toto je však jen jedna část standardu Unicode: univerzální kódovaná znaková sada . Standard Unicode také zahrnuje pravidla pro vykreslování, objednávání, normalizaci a ano, kódování těchto znaků Unicode.
UTF-8 je jedním z tři standardní kódování znaků použitá k reprezentaci Unicode jako počítačového textu (ostatní jsou UTF-16 a UTF-32). Historicky byly textové soubory obvykle kódovány jako sekvence bajtů, kde každý bajt představoval jeden znak. Jelikož však bajt může nabrat pouze jednu z 256 hodnot, není to pro Unicode možné. Nejjednodušší kódování Unicode je UTF-32 , které používá 4 bajty (nebo 32 bitů) na znak. To je však neefektivní v jeho využití úložiště, paměti a zpracování. Do roku 1996 se předpokládalo (nebo doufalo), že k reprezentaci každého znaku Unicode budou stačit 2 bajty, ale pak si lidé uvědomili, kolik čínských znaků existuje. Výsledkem je, že některé jazyky, jako je JavaScript, stále používají 2 bajty ( UCS-2 ) k reprezentaci znaků, což může způsobit problémy při zpracování znaků, jako je \ unicode {x1F60E }. Abychom to napravili, byl UCS-2 nahrazen UTF-16 , kde některé znaky byly zastoupeny dvěma dvoubajtové kódové jednotky místo jedné. Díky tomu je manipulace s řetězci složitější (například výpočet délky řetězce), ale využívá méně prostoru než UTF-32.
UTF-8 je podobný UTF-16, kromě toho, že jeho kódové jednotky jsou všechny jeden bajt (8 bitů) dlouhý, se znaky reprezentovanými mezi jednou a čtyřmi kódovými jednotkami. Znaky prostého textu (tj. ASCII) jsou všechny reprezentovány jedním bajtem stejným způsobem jako běžné řetězce jiné než Unicode. To má velkou výhodu, že starší ASCII text je platný také UTF-8. Kromě toho se bajty představující ASCII nepoužívají při reprezentaci žádných dalších znaků, takže starší programy, které tyto hledají, nemusí být aktualizovány. Tyto výhody v kombinaci se skutečností, že UTF-8 je obvykle vesmírně nejefektivnější způsob ukládat text Unicode (zejména pro západní texty) znamená, že velká většina webových stránek je dnes kódována v UTF-8.
Odpovědět
Program pro zpracování textu musí něco vyprodukovat (a něco uložit do souboru). Pokud chcete, aby programy spolupracovaly, aby váš program pro zpracování textu mluvil například s vašimi ovladači tiskáren a skenerů, musíte popsat, jak komunikují. A chtěli byste to udělat efektivně. standard tuto vzájemnou komunikaci povoluje. Jinak vaše chytré nabídky aplikace Microsoft Word nebudou fungovat s vaší tiskárnou Canon a skenerem HP. To není to, co chcete….
Upravit přidáno: Viz odpověď komety o tom, jak unicode souvisí se sémantikou (nikoli syntaxí) /zastoupení). To se týká mého bodu týkajícího se interoperability. Chcete, aby vaše posloupnost postav byla „smysluplná“. Proto jsou některé věci zastoupeny v unicode a jiné nikoli. Uživatelé latinské abecedy, uživatelé cyrilice, uživatelé řecké abecedy a uživatelé turecké abecedy mají všichni písmeno, které vypadá jako „a“ (i když u některých typů písma jsou rozlišitelné a u jiných nikoli), ale autoři v těchto jazycích je považují za různé znaky (mají sémantický rozdíl). Unicode je tedy považuje za různé kódové body. Představují odlišnou sémantiku, různě se třídí atd. Totéž platí pro uvozovky vlevo a vpravo a pro určité znaky s přízvukem. V některých jazycích mají sémantický rozdíl. Určitý druh interoperability získáte, když správně reprezentujete sémantiku.
Jiný druh získáte, když reprezentujete věci obrazně správně. Unicode se však snaží o první, nikoli o druhý.
Pokud by unicode představoval homoglyfy jako jednotlivé znaky, pak by měli problém s tím, jaké písmo bylo použito, a zničilo by to sémantickou správnost. Latinské písmeno a v černém písmu se velmi liší od helvétského od římského atd. A šikmá a kurzíva nejsou vždy stejné, ale někdy jsou.
Když čtu nápisy v Bulharsku, většina někdy používají pro své cyrilické znaky velmi odlišné písmo než latinský přepis, takže je zřejmé, že se jedná o odlišné znaky, dokonce i pro věci, jako je písmeno „a“. Ale někdy ne, a když vidím Bm na poznávací značce, musím rozlišit, zda přepisuje na Vt v angličtině, nebo je to prostě latinka Bm a jsou tam celá taková slova, která si musím přečíst, abych věděl, kterou znakovou sadu mají používají.
A dokonce i získání sémantické správnosti je těžké. Německé ostré znaky existují pouze malými písmeny a pokud vytisknete slovo ve všech „velkých písmech“, použijete dva znaky S, ale existují slova v malých písmech, která používají dva znaky „malých písmen“, a slova, která používají s.
Unicode je tedy jako téměř všechny standardy kompromisem. Snaží se získat správné odpovědi, aby byla slova správně zastoupena a mohla být pomocí něj přenášena. Nepokouší se být „graficky“ správný, takže posloupnost unicode jednoznačně popisuje své tištěné vyjádření se všemi předepsanými podrobnostmi. K tomu potřebujete více než unicode.
A jakmile se vydáte touto cestou, máte problém se zařízeními, která nemohou odeslat (nebo zadat) požadovaný popis. Tiskárna s rozlišením 200 dpi toho dokáže jen tolik a existují jemnosti, které tiskárna s rozlišením 1200 dpi dokáže vyjádřit a které se při rozlišení 200 dpi jednoduše ztratí. Otázkou je, zda vám na tom záleží? Někdy ano, ale jindy ne.
Unicode je vhodný pro mnoho případů, kdy tak nečiníte a jednoduše chcete správnou sémantiku. Pokud chcete jednoznačně předat slovo a podle toho, které kódové body Unicode se používají, víte, jak je slovo napsáno v přirozeném jazyce. Existence homoglyfů umožňuje být nejednoznačný, ale nevyžadují to. V unicode můžete být jednoznační. Prostě nemůžete představovat všechny podrobnosti toho, jak může být vytištěn.