Rozdíl mezi UCS-2 a UTF-16

UCS-2 vs. UTF-16

UCS-2 a UTF-16 jsou dvě schémata kódování znaků, která k reprezentaci každého znaku používají 2 bajty, které se skládají ze 16 bitů; tedy přípony 2 a 16. Hlavní rozdíl mezi UCS-2 a UTF-16 je ten, který se dnes používá. UCS-2 je starší schéma, které je od té doby považováno za zastaralé a nahrazeno mnohem novějším a výkonnějším UTF-16.

UCS-2 je kódování s pevnou šířkou, které používá dva bajty pro každý znak; to znamená, že může představovat celkem 216 znaků nebo mírně více než 65 tisíc. Na druhé straně je UTF-16 schéma kódování s proměnnou šířkou, které používá minimálně 2 bajty a maximálně 4 bajty pro každý znak. To umožňuje UTF-16 reprezentovat libovolný znak v Unicode při využití minimálního prostoru pro nejčastěji používané znaky. U většiny 65 000+ znaků mají UCS-2 a UTF-16 identické kódové body; takže jsou do značné míry rovnocenné. To umožňuje aplikacím podporujícím UTF-16 správně interpretovat kódy UCS-2. Ale naopak by nefungovalo kvůli mnoha vylepšením v UTF-16.

Jedním z uvedených vylepšení je schopnost reprezentovat skripty, které jde zprava doleva spíše než zleva doprava. V UTF-16 mohou skripty identifikovat směrovost, což umožňuje aplikaci správně vykreslit slova uložená v kódu. UCS-2 postrádá tuto schopnost, takže nebude fungovat s skripty jako arabština a hebrejština, které se pohybují zprava doleva. Další funkcí, kterou má UTF-16, je normalizace. Normalizace zachází se slovy, které znamenají totéž, ale jsou zastoupeny odlišně jako identické. Například slova „nemůže“ a „nemůže“ jsou identická, protože druhá je pouze zkrácením první. To je velmi důležité, zejména pokud hledáte taková slova, protože by to umožnilo komplexnější výsledek vyhledávání. V UCS-2 k tomu nedochází automaticky, takže aplikace musí tuto funkci implementovat sama.

Není opravdu důvod zvolit UCS-2 než UTF-16, kromě aplikace, kterou nemusíte podporovat UTF-16. Ve všech aspektech je UTF-16 lepší než UCS-2. Je také velmi zpětně kompatibilní, takže se nemusíte starat o soubory kódované v UCS-2.

Souhrn:

  1. UCS-2 je zastaralý a od té doby byl nahrazen UTF-16
  2. UCS-2 je schéma kódování s pevnou šířkou, zatímco UTF-16 je schéma kódování s proměnnou šířkou
  3. Aplikace podporující UTF-16 umí číst soubory UCS-2, ale ne naopak
  4. UTF-16 podporuje právo nechat skripty, zatímco UCS-2 ne
  5. UTF-16 podporuje normalizaci, zatímco UCS-2 ne