Rozdíl mezi UTF-8 a UTF-16

UTF-8 vs. UTF-16

UTF je zkratka pro Unicode Transformation Format. Je to rodina standardů pro kódování znakové sady Unicode na její ekvivalentní binární hodnotu. UTF byl vyvinut tak, aby uživatelé měli standardizované prostředky kódování znaků s minimálním množstvím prostoru. UFF-8 a UTF 16 jsou pouze dva ze zavedených standardů pro kódování. Liší se pouze počtem bajtů, které používají k zakódování jednotlivých znaků. Protože oba jsou kódování s proměnnou šířkou, mohou pro kódování dat použít až čtyři bajty, ale pokud jde o minimum, UTF-8 používá pouze 1 bajt (8 bitů) a UTF-16 používá 2 bajty (16 bitů). To má obrovský dopad na výslednou velikost kódovaných souborů. Při použití pouze znaků ASCII by byl soubor kódovaný UTF-16 zhruba dvakrát větší než stejný soubor kódovaný u UTF-8.

Hlavní výhodou UTF-8 je, že je zpětně kompatibilní s ASCII. Znaková sada ASCII má pevnou šířku a používá pouze jeden bajt. Při kódování souboru, který používá pouze znaky ASCII s UTF-8, by výsledný soubor byl totožný se souborem kódovaným pomocí ASCII. To není možné při použití UTF-16, protože každý znak by byl dlouhý dva bajty. Starší software, který si není vědom Unicode, by nemohl otevřít soubor UTF-16, i kdyby měl pouze znaky ASCII.

UTF-8 je byte orientovaný formát, a proto nemá problémy s byte orientovanými sítěmi nebo soubory. Na druhou stranu UTF-16 není orientován na bajty a je třeba vytvořit pořadí bajtů, aby bylo možné pracovat s byte orientovanými sítěmi. UTF-8 se také lépe zotavuje z chyb, které poškozují části souboru nebo proudu, protože stále dokáže dekódovat další nekorupovaný bajt. UTF-16 provádí totéž, pokud jsou některé bajty poškozeny, ale problém spočívá, když jsou některé bajty ztraceny. Ztracený bajt může smíchat následující kombinace bajtů a výsledný výsledek by byl zkomolený.

Souhrn:
1. UTF-8 a UTF-16 se používají pro kódování znaků
2. UTF-8 používá při kódování znaků minimálně bajt, zatímco UTF-16 používá dva
3. Soubor kódovaný UTF-8 má tendenci být menší než soubor kódovaný UTF-16
4. UTF-8 je kompatibilní s ASCII, zatímco UTF-16 je nekompatibilní s ASCII
5. UTF-8 je orientován bajtem, zatímco UTF-16 není
6. UTF-8 se lépe zotavuje z chyb ve srovnání s UTF-16