UTF-8 a UTF-16

Anonim

UTF-8 vs UTF-16

UTF znamená formát Unicode Transformation Format. Jedná se o rodinu standardů pro kódování znakové sady Unicode na ekvivalentní binární hodnotu. UTF byla vyvinuta tak, aby uživatelé měli standardizované prostředky pro kódování znaků s minimálním množstvím místa.UTF-8 a UTF 16 jsou pouze dvěma stanovenými normami pro kódování. Rozlišují se jen kolik bajtů používají k zakódování každé postavy. Vzhledem k tomu, že oba typy jsou kódování s proměnnou šířkou, mohou použít až čtyři bajty pro kódování dat, ale pokud jde o minimum, UTF-8 používá pouze 1 bajt (8bits) a UTF-16 používá 2 bajty (16bits). To má velký dopad na výslednou velikost kódovaných souborů. Při použití znaků pouze ASCII by byl kódovaný soubor UTF-16 zhruba dvakrát větší než stejný soubor zakódovaný s UTF-8.

Hlavní výhodou UTF-8 je to, že je zpětně kompatibilní s ASCII. Sada znaků ASCII je pevná šířka a používá pouze jeden byte. Při kódování souboru, který používá pouze znaky ASCII s UTF-8, bude výsledný soubor shodný se souborem kódovaným ASCII. To není možné, pokud používáte UTF-16, protože každý znak by byl dlouhý dva bajty. Starší software, který není Unicode vědom, by nemohl otevřít soubor UTF-16, i když měl pouze znaky ASCII.

UTF-8 je byte orientovaný formát, a proto nemá žádné problémy s byte orientovanými sítěmi nebo soubory. UTF-16, na druhé straně, není orientován bajtem a potřebuje vytvořit bajtový řád, aby mohl pracovat s byte orientovanými sítěmi. UTF-8 je také lepší při obnově z chyb, které poškozují části souboru nebo streamu, protože může ještě dekódovat další neporušený byte. UTF-16 dělá přesně totéž, pokud jsou některé bity poškozeny, ale problém spočívá v ztrátě některých bajtů. Ztracený byte může smíchat následující kombinace bajtů a konečný výsledek by byl zkreslen.

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