Atšķirība starp UCS-2 un UTF-16

UCS-2 pret UTF-16

UCS-2 un UTF-16 ir divu rakstzīmju kodēšanas shēmas, kurās katras rakstzīmes attēlošanai izmantoti 2 baiti, kas sastāv no 16 bitiem; tādējādi piedēkļi 2 un 16. Galvenā atšķirība starp UCS-2 un UTF-16 ir tā, kura tiek izmantota šodien. UCS-2 ir vecāka shēma, kas kopš tā laika tiek uzskatīta par novecojušu un aizstāta ar daudz jaunāku un jaudīgāku UTF-16.

UCS-2 ir fiksēta platuma kodējums, kurā katrai rakstzīmei tiek izmantoti divi baiti; kas nozīmē, ka tas var attēlot līdz 216 rakstzīmēm vai nedaudz vairāk par 65 tūkstošiem. No otras puses, UTF-16 ir mainīga platuma kodēšanas shēma, kurā katrai rakstzīmei tiek izmantoti vismaz 2 baiti un maksimāli 4 baiti. Tas ļauj UTF-16 attēlot jebkuru rakstzīmi Unicode, vienlaikus izmantojot minimālu vietu visbiežāk izmantotajām rakstzīmēm. Lielākajai daļai no 65 000 rakstzīmēm UCS-2 un UTF-16 ir identiski koda punkti; tāpēc tie lielākoties ir līdzvērtīgi. Tas ļauj UTF-16 lietojumprogrammām pareizi interpretēt UCS-2 kodus. Bet otrādi nedarbosies daudzo UTF-16 uzlabojumu dēļ.

Viens no minētajiem uzlabojumiem ir spēja attēlot skriptus, kas iet no labās uz kreiso, nevis no kreisās uz labo. UTF-16 skripti var noteikt virziena virzienu, tādējādi ļaujot lietojumprogrammai pareizi atveidot vārdus, kas tiek saglabāti kodā. UCS-2 trūkst šo spēju, tāpēc nedarbosies ar tādiem skriptiem kā arābu un ebreju, kas pārvietojas no labās uz kreiso pusi. Vēl viena UTF-16 iezīme ir normalizēšana. Normalizēšana traktē vārdus, kas nozīmē vienu un to pašu, bet atšķirīgi attēlo kā identiskus. Piemēram, vārdi “nevar” un “nevar” ir identiski, jo pēdējais ir tikai pirmā saīsinājums. Tas ir ļoti svarīgi, it īpaši, kad meklējat šādus vārdus, jo tas ļautu iegūt visaptverošāku meklēšanas rezultātu. UCS-2 tas nenotiek automātiski, tāpēc lietojumprogrammai šāda funkcija jāievieš vienai.

Patiešām nav iemesla izvēlēties UCS-2, nevis UTF-16, izņemot to, ka ir tāda programma, kurai jums nav jāatbalsta UTF-16. Visos aspektos UTF-16 ir pārāks par UCS-2. Tas lielā mērā ir arī savietojams, tāpēc jums nav jāuztraucas par failiem, kas kodēti UCS-2.

Kopsavilkums:

  1. UCS-2 ir novecojis, un kopš tā laika tas ir aizstāts ar UTF-16
  2. UCS-2 ir fiksēta platuma kodēšanas shēma, savukārt UTF-16 ir mainīga platuma kodēšanas shēma
  3. UTF-16 lietojumprogrammas var lasīt UCS-2 failus, bet ne otrādi
  4. UTF-16 atbalsta tiesības ļaut skriptiem, kamēr UCS-2 to nedara
  5. UTF-16 atbalsta normalizēšanu, bet UCS-2 to nedara