RekenaarsProgrammering

UTF-8 - karakterkodering

Unicode ondersteun bykans alle bestaande karakters. Die beste kodering vir 'n Unicode-karakterset is die UTF-8-kodering. Dit bied verenigbaarheid met ASCII, weerstand teen data korrupsie, doeltreffendheid en gemak van verwerking. Maar oor alles in orde.

Vorme van kodering

Rekenaars werk met getalle nie net as abstrakte wiskundige voorwerpe nie, maar as kombinasies van eenhede van berging en verwerking van vaste-grootte inligting-byte en 32-bis woorde. Die koderingsstandaard moet dit in ag neem wanneer die manier waarop karakters deur getalle voorgestel word, bepaal word.

In rekenaarstelsels word heelgetalle in geheue selle van 8 bisse (1 byte), 16 of 32 bisse gestoor. Elke Unicode-enkodering vorm bepaal watter volgorde geheue selle verteenwoordig 'n heelgetal wat ooreenstem met 'n bepaalde karakter. Die standaard bied drie verskillende vorme van enkodering Unicode karakters: 8, 16 en 32-bis blokke. Gevolglik word dit UTF-8, UTF-16 en UTF-32 genoem. Die naam UTF staan vir Unicode-omskakelingsformaat. Elk van die drie vorms van kodering is 'n gelyke middel om Unicode karakters te verteenwoordig, het voordele in verskeie toepassings.

Hierdie enkodering kan gebruik word om al die karakters van die Unicode-standaard te verteenwoordig. So, hulle is ten volle versoenbaar vir oplossings om verskillende redes deur verskillende vorme van kodering te gebruik. Elke enkodering kan uniek omskep word in een van die ander twee sonder verlies van data.

Beginsel van nie-oplê

Elk van die Unicode-kodering vorms is ontwerp met inagneming van die ontoelaatbaarheid van gedeeltelike oorvleueling. Byvoorbeeld, Windows-932 genereer karakters uit een of twee grepe kode. Die lengte van die ry hang af van die eerste byte, dus die voorste byte waardes in die volgorde van twee grepe en 'n enkele byte sny nie. Die waardes van die enkele byte en die sluitingbyte van die volgorde kan egter dieselfde wees. Dit beteken byvoorbeeld dat wanneer jy na die karakter D (kode 44) soek, dit in die tweede deel van die volgorde van twee grepe van die karakter "D" (kode 84 44) kan vind. Om te bepaal watter volgorde korrek is, moet die program die vorige grepe in ag neem.

Die situasie word ingewikkelder as die meester en die sluitingbyte pas. Dit beteken dat om die dubbelsinnigheid terug te keer, sal 'n omgekeerde soektog uitgevoer word tot aan die begin van die teks of 'n ondubbelsinnige volgorde van kode. Dit is nie net ondoeltreffend nie, maar nie beskerm teen moontlike foute nie, want een slegte byte is voldoende om die hele teks onleesbaar te maak.

Die Unicode-omskakelingsformaat vermy hierdie probleem omdat die waardes van die voorste, agterliggende en enkele eenheid van inligtingsberging nie ooreenstem nie. As gevolg hiervan is alle Unicode-enkodering geskik vir soek en vergelyking, en gee nooit 'n foutiewe resultaat as gevolg van toevalligheid van verskillende dele van die karakterkode nie. Die feit dat hierdie enkoderingvorms voldoen aan die beginsel van nie-opdrag, onderskei hulle van ander multi-byte Oos-Asiatiese enkodering.

Nog 'n aspek van nie-kruising van Unicode-enkodering is dat elke karakter duidelike grense het. Dit elimineer die noodsaaklikheid om 'n onbepaalde aantal vorige karakters te skandeer. Hierdie kenmerk van enkodering word soms self-sinkronisasie genoem. Verdraaiing van een eenheid kode sal lei tot verwringing van slegs een karakter, en omliggende simbole bly ongeskonde. In die 8-bis-omskakelingsformaat, as die wyser verwys na 'n byte wat begin met 10xxxxxx (in binêre kodering), is een of drie omgekeerde oorgange nodig om na die begin van die karakter te soek.

konsekwentheid

Die Unicode Consortium ondersteun ten volle al 3 koderingsvorms. Dit is belangrik om nie UTF-8 en Unicode te weerstaan nie, aangesien alle omskakeling formate ewe legitieme implementerings van Unicode-karakterkoderingsvorms is.

Byte-oriëntasie

Om die UTF-32 simbool voor te stel, benodig u een 32-bits kodekode wat ooreenstem met die Unicode-kode. UTF-16 - van een tot twee 16-bis-eenhede. En UTF-8 gebruik tot 4 grepe.

Die kodering van UTF-8 is ontwerp vir verenigbaarheid met byte-georiënteerde stelsels gebaseer op ASCII. Die meeste van die bestaande sagteware- en inligtingstegnologiepraktyke het lankal vertrou op die voorstelling van simbole in die vorm van 'n reeks grepe. Baie protokolle hang af van die onveranderde ASCII-kodering en gebruik of vermy ook spesiale beheerkarakters. 'N maklike manier om Unicode aan te pas by sulke situasies, is om 8-bits kodering te gebruik om Unicode karakters te verteenwoordig wat gelykstaande is aan enige ASCII karakter of beheer karakter. Hiervoor is UTF-8-kodering bedoel.

Veranderlike lengte

UTF-8 is 'n kodering met veranderlike lengte wat bestaan uit 8-bis inligting stooreenhede waarvan die hoë-orde bisse aandui watter deel van die volgorde elke byte behoort. Een reeks waardes word gereserveer vir die eerste element van die kode volgorde, die ander vir die volgende elemente. Dit verseker ongeskikte kodering.

ASCII

Die UTF-8-kodering ondersteun ASCII-kodes ten volle (0x00-0x7F). Dit beteken dat Unicode karakters U + 0000-U + 007F omskep word na 'n enkele byte 0x00-0x7F UTF-8 en dus van ASCII onderskei word. Om dubbelsinnigheid te voorkom, word die waardes 0x00-0x7F nie meer gebruik in enige byte van die Unicode-karaktervoorstelling nie. Om nie-ideografiese simbole anders as ASCII te koder, word 'n ry van twee grepe gebruik. Die simbole van die reeks U + 0800-U + FFFF word met drie grepe voorgestel, terwyl die bykomende met kodes groter as U + FFFF vier grepe benodig.

Toepassingsgebied

Die kodering van UTF-8 word gewoonlik verkies in die HTML-protokol en soortgelyk aan dit.

XML het die eerste standaard geword met volledige UTF-8-kodering ondersteun. Organisasies wat betrokke is by standaardisering, beveel dit ook aan. Die probleem van die ondersteuning van ander URL-adresse as ASCII-karakters is opgelos toe die W3C-konsortium en die IETF-ingenieursgroep ingestem het om alle URL's uitsluitlik in UTF-8 te koder.

Verenigbaarheid met ASCII vergemaklik die oorgang na nuwe sagteware. Met UTF-8 werk die meeste teksredigeerders, insluitende JEdit, Emacs, BBEdit, Eclipse en Notepad van die Windows-bedryfstelsel. Geen ander vorm van Unicode-kodering kan spog met sulke ondersteuning van die gereedskap nie.

Die voordeel van kodering is dat dit uit 'n reeks grepe bestaan. Met UTF-8 snare is dit maklik om in C en ander programmeertale te werk. Dit is die enigste vorm van kodering wat nie die merk van die volgorde van die BOM-grepe of die kodering-verklaring in XML benodig nie.

self-sinchronisasie

In 'n omgewing wat 8-bis simbool verwerk, in vergelyking met ander multi-byte enkodering, het UTF-8 die volgende voordele:

  • Die eerste byte van die kode volgorde bevat inligting oor die lengte daarvan. Dit verhoog die doeltreffendheid van direkte soektog.
  • Dit word vereenvoudig om die begin van die karakter te vind, aangesien die aanvanklike byte beperk is tot 'n vaste reeks waardes.
  • Daar is geen kruising van bytewaardes nie.

Vergelyking van voordele

Die UTF-8-kodering is kompak. Maar wanneer jy om die kodering van Oos-Asiatiese karakters (Chinese, Japannese, Koreaanse, Chinese karakters) aansoek doen, word 3-byte-reekse gebruik. Ook UTF-8-kodering is minderwaardig as ander vorms van kodering deur verwerkingspoed. 'N binêre snaar sorteer lewer dieselfde resultaat as 'n Unicode binêre soort.

Karakterkoderingskema

Die karakterkoderingskema bestaan uit 'n karakterkoderingvorm en 'n metode van byte-vir-pixel-reëling van kode-eenhede. Om die enkoderingskema volgens die Unicode-standaard te bepaal, word die gebruik van die aanvanklike byte bestelling punt (BOM, Byte bestelling punt) verskaf.

Wanneer u die BOM in UTF-8 aanskakel, word die funksie van die etiket slegs beperk deur die gebruik van die koderingvorm aan te dui. Die probleem met die bepaling van die volgorde van grepe in UTF-8 is nie, aangesien die grootte van die kodering een byte is. Die gebruik van BOM vir hierdie kodering vorm is nie verpligtend of aanbeveel nie. BOM kan voorkom in tekste wat omgeskakel word van ander enkodering wat die byte-bestellingspunt gebruik, of vir die UTF-8-kodering handtekening. Dit is 'n ry van 3 grepe EF 16 BB 16 BF 16 .

Hoe UTF-8-kodering instel

In HTML word UTF-8- kodering ingestel deur die volgende kode te gebruik:

hoof

˂meta http-equiv = "Inhoud-tipe" inhoud = "teks / html; charset = utf-8" ˃

In PHP word UTF-8-kodering gespesifiseer met behulp van die koptekst () -funksie aan die begin van die lêer nadat die waarde van die foutuitvoervlak gestel is:

˂? Php

Error_reporting (-1);

Opskrif ('Inhoud-Tipe: teks / html; charset = utf-8');

Om te koppel aan MySQL databasisse, word die kodering van UTF-8 soos volg gestel:

˂? Php

Mysql_set_charset ('utf8');

In CSS-lêers word UTF-8-karakterkodering soos volg gespesifiseer:

@ Charset "utf-8";

Wanneer lêers van alle soorte gestoor word, word UTF-8-kodering sonder BOM gekies, anders sal die werf nie werk nie. Om dit te doen, kies in die DreamWeave-program die kieslysitem "Modifications - Page Properties - Title / Encoding", verander die kodering na UTF-8. Vervolgens moet u die bladsy herlaai, die boks "Connect Unicode Signatures (BOM)" deaktiveer en die veranderinge toepas. As enige teks op die bladsy of in die databasis deur 'n ander vorm van kodering ingevoer is, moet dit weer ingevoer of hergekodeer word. Wanneer u met gereelde uitdrukkings werk, is dit verpligtend om die u wysiger te gebruik.

U kan die lêer ook stoor in die UTF-8-kodering in Windows Notepad. Nadat u die kieslysitem "Lêer - Stoor as ..." gekies het, stel die nodige enkoderingvorm in en stoor die lêer in UTF-8-kodering.

In die Notepad + + teks editor, as die kodering anders is as UTF-8, verander die kodering en stoor dit in UTF-8-kodering via die menu item "Convert to UTF-8 without BOM".

Daar is geen alternatief nie

In die konteks van globalisering, wanneer politieke en taalgrense vervaag word, word karakterstelle wat plaaslike eienskappe het, minder bruikbaar. Unicode is die enigste karakterstel wat alle lokalisasies ondersteun. En UTF-8 is 'n voorbeeld van die korrekte implementering van Unicode, wat:

  • Ondersteun 'n wye verskeidenheid van gereedskap, insluitend verenigbaarheid met ASCII-kodering;
  • Het 'n weerstand teen data korrupsie;
  • Maklik en effektief in verwerking;
  • Nie afhanklik van die platform nie.

Met die koms van UTF-8 is besprekings oor watter vorm van kodering of karakterstel beter, betekenisloos geword.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 af.birmiss.com. Theme powered by WordPress.