WikiDer > UTF-32
UTF-32 (32-бит Юникодты түрлендіру форматы) - бұл Юникодты кодтау үшін қолданылатын тұрақты ұзындықтағы кодтау код нүктелері дәл 32 бит (төрт) пайдаланады байт) бір кодтық нүктеге (бірақ алдыңғы қатарлы биттердің саны нөлге тең болуы керек, өйткені 2-ден әлдеқайда аз)32 Юникодты кодтар).[дәйексөз қажет] UTF-32 - бұл барлық басқа Unicode трансформация форматтарынан айырмашылығы, ұзындықтың өзгермелі кодталуы болып табылатын, тұрақты ұзындықтағы кодтау. UTF-32 ішіндегі әрбір 32-биттік мән бір Юникодты кодтық нүктені білдіреді және сол кодтық нүктенің сандық мәніне толық тең.
UTF-32-нің басты артықшылығы - Юникодтың кодтық нүктелері тікелей индекстелген. Табу Nth кодтық нүктелер тізбегіндегі кодтық нүкте - а тұрақты уақыт жұмыс. Керісінше, а өзгермелі ұзындықтағы код талап етеді дәйекті қол жетімділік табу Nth тізбектегі кодтық нүкте. Бұл UTF-32-ді әдеттегідей жасалынған жолдың әрбір орналасуын тексеру үшін бірге көбейтілетін бүтін сандарды қолданатын кодты қарапайым ауыстыруға айналдырады. ASCII.
UTF-32-нің негізгі жетіспеушілігі - оның төртеуін қолданып, кеңістіктің тиімсіздігі байт әр нүкте үшін, оның ішінде әрқашан нөлге тең болатын 11 бит. -Дан тыс кейіпкерлер BMP мәтіндердің көпшілігінде салыстырмалы түрде сирек кездеседі және оларды өлшемдік бағалау үшін елемеуге болады. Бұл UTF-32-дің өлшемінен екі есе жақын етеді UTF-16. Ол төрт есе үлкен болуы мүмкін UTF-8 ішіндегі кейіпкерлердің қанша болуына байланысты ASCII ішкі жиын.
Тарих
Түпнұсқа ISO 10646 стандарт 32 битті анықтайды кодтау нысаны деп аталады UCS-4, онда әрбір код Әмбебап таңбалар жиынтығы (UCS) 0-ден 0x7FFFFFFF-ге дейінгі 31 биттік мәнмен ұсынылған (белгі биті қолданылмаған және нөл). 2003 жылдың қарашасында Юникод шектелді RFC 3629 шектеулеріне сәйкес келеді UTF-16 кодтау: U + 10FFFF-тен жоғары кодтық нүктелерге нақты тыйым салу (сонымен қатар U + D800-ден U + DFFF-ге дейінгі жоғары және төмен суррогаттар). Бұл шектеулі жиын UTF-32 анықтайды.[1][2] ISO стандартында (1998 жылғы Unicode 2.1-де) 0xE00000-ден 0xFFFFFF-ге дейін және 0x60000000-ден 0x7FFFFFFF-ге «жеке пайдалануға арналған» болған болса да.[3] бұл аймақтар кейінгі нұсқаларда жойылды. Себебі оның қағидалары мен процедуралары ISO / IEC JTC 1 / SC 2 2 жұмыс тобы кодтық пункттердің барлық болашақ тағайындаулары Юникод диапазонымен шектелетінін, UTF-32 барлық UCS кодтық нүктелерін ұсына алатындығын және UTF-32 мен UCS-4 бірдей болатынын айтады.
Талдау
Бір кодтық нүктеге байттардың бекітілген саны ыңғайлы болып көрінгенімен, ол пайда болған сияқты пайдалы емес. Бұл қысқартуды жеңілдетеді, бірақ онымен салыстырғанда айтарлықтай емес UTF-8 және UTF-16 (екеуі де ең көбі 2-4 кодтық бірлікке қарап нүктені кесу үшін кері қарай алады).
Бұл өте сирек кездеседі[дәйексөз қажет] сол кодты табуды қалайды Nth кодты 0-ден N – 1-ге дейінгі кодтарды алдын-ала зерттеместен. Мысалы, XML талдау барлық алдыңғы таңбаларға қарамай, таңбамен ештеңе жасай алмайды.[4] Сонымен, әрбір таңба үшін 1-ге көбейтілетін бүтін индекс код бірліктерімен өлшенетін және әр символ тексерілген кезде код бірліктерінің санымен көбейтілетін бүтін санмен ауыстырылуы мүмкін. Бұл жылдамдықтың қабылданған артықшылықтарын жояды[дәйексөз қажет] UTF-32.
UTF-32 жолдың көрсетілген енін есептеуді жеңілдетпейді, өйткені тіпті «бекітілген ені» қаріпімен таңбаның әр позициясына бірнеше кодтық нүкте болуы мүмкін (кейіпкерлерді біріктіру) немесе кодтық нүктеге бірнеше таңбаның орны («»графема кластерлер »үшін CJK идеографтар). Өздерін солдан оңға қарай шектейтін редакторлар және алдын-ала жасалған кейіпкерлер бекітілген өлшем бірліктерінің артықшылығын қолдана алады, бірақ мұндай редакторлардың BMP емес таңбаларды қолдауы екіталай, сондықтан олармен бірдей жұмыс істей алады UTF-16.
Пайдаланыңыз
UTF-32-нің негізгі қолданылуы таңбалар тізбегінен гөрі бір кодтық нүктелер немесе глифтер болатын ішкі API-да қолданылады. Мысалы, қазіргі мәтінді көрсетуде соңғы кезең әрқайсысы бар құрылымдардың тізімін құру болып табылады координаттар (х, у), атрибуттар және сурет салу үшін глифті анықтайтын бір UTF-32 кодтық нүктесі. Көбінесе Юникод емес ақпарат әр сөздің 11 битінде «пайдаланылмаған» күйде сақталады.[дәйексөз қажет]
Windows жүйесінде UTF-32 жолдарын қолдану (қайда wchar_t 16 бит) дерлік жоқ. Unix жүйелерінде UTF-32 жолдары түріне байланысты кейде, бірақ сирек қолданбалы бағдарламалар арқылы іштей қолданылады wchar_t 32 бит ретінде анықталады. Python орнына пайдалану үшін 3.2 дейінгі нұсқаларды құрастыруға болады UTF-16; 3.3 нұсқасынан бастап барлық Unicode жолдары UTF-32-де сақталады, бірақ ең үлкен Unicode реттік жүйесімен ([1, 2 немесе 4 байтпен) [кодтық нүктеге] байланысты оңтайландырылған нөлдік байттармен ” .[5] 7. Тұқым[6] және Лассо[дәйексөз қажет] бағдарламалау тілдері барлық индекстерді UTF-32 көмегімен кодтайды, бұл тікелей индекстеу маңызды деп есептейді Джулия тілде (1.0 нұсқасына дейін) UTF-32 стандартты кітапханада (UTF-8 және UTF-16-ға қосымша) жолдардың өзіндік кодталуының бірі болған, бірақ тек UTF-8 жолдарының болуымен жеңілдетілген (басқаларымен бірге) кодтау мұра болып саналды және пакетке стандартты кітапханадан шығарылды[7]); «UTF-8 манифестін» орындау.[8]
Нұсқалар
Техникалық тұрғыдан жарамсыз болғанымен, суррогаттың жартысы көбіне кодталады және рұқсат етіледі. Бұл жарамсыз UTF-16-ны (мысалы, Windows файл атаулары) UTF-32-ге аударуға мүмкіндік береді, мысалы, WTF-8 UTF-8 жұмыстарының нұсқасы. Кейде BMP емес символдардың орнына жұптасқан суррогаттар кодталады, ұқсас CESU-8. Пайдаланылмаған 32 биттік мәндердің көптігіне байланысты UTF-8 қателерін кодтау үшін Unicode емес мәндерді қолдану арқылы жарамсыз UTF-8-ді сақтауға болады, бірақ бұл үшін стандарт жоқ.
Сондай-ақ қараңыз
Әдебиеттер тізімі
- ^ ISO / IEC 10646: 2014 9.4-тармақ: «Суррогат кодтық нүктелер UCS скаляр мәні болмағандықтан, 0000 D800-0000 DFFF ауқымындағы UTF-32 код бірліктері дұрыс қалыптаспаған». 4.57-тармақ: «[UCS кодтар кеңістігі] 0-ден 10-ға дейінгі FFFF (он алтылық) бүтін сандардан тұрады». 4.58-тармақ: «[UCS скаляр мәні] кез-келген UCS кодының нүктесі, жоғары суррогат және төменгі суррогат кодтық нүктелерінен басқа».
- ^ Картаны бейнелеу Юникодты кодтау формаларына нұсқайды, § 1: UTF-32
- ^ ӘМбебап сипаттама жиынтығы (UCS)
- ^ https://www.ibm.com/developerworks/xml/library/x-utf8/
- ^ Лювис, Мартин. «PEP 393 - икемді ішекті ұсыну». python.org. Python. Алынған 26 қазан 2014.
- ^ «UTF-32 пайдалану бірнеше артықшылықтарға ие».
- ^ JuliaStrings / LegacyStrings.jl: Legacy Unicode жол түрлері, JuliaStrings, 2019-05-17, алынды 2019-10-15
- ^ «UTF-8 барлық жерде Манифест».
Сыртқы сілтемелер
- Unicode Standard 5.0.0, 3 тарау - UTF-32 формуласын § 3.9, D90 (PDF бет 40) және § 3.10, D99-D101 (PDF бет 45) бойынша анықтайды
- Юникодтың стандартты қосымшасы №19 - Unicode 3.x үшін UTF-32 формалды түрде анықталған (2001 ж. Наурыз; 2002 ж. Наурызында соңғы жаңартылған)
- UTF-32, UTF-32BE, UTF-32LE жаңа чарттарын тіркеу - UTF-32 IANA charset тізіліміне қосылатындығы туралы хабарландыру (2002 ж. Сәуір)