DatorerProgrammering

UTF-8 - teckenkodning

Unicode stöder nästan alla befintliga teckenuppsättningar. Den bästa kodningen för en Unicode teckenuppsättning är UTF-8-kodningen. Det ger kompatibilitet med ASCII, motstånd mot datakorruption, effektivitet och enkel hantering. Men om allt i ordning.

Former av kodning

Datorer arbetar med siffror inte bara som abstrakta matematiska objekt, utan som kombinationer av lagringsenheter och bearbetning av informationsstorlekar med fast storlek och 32-bitars ord. Kodningsstandarden måste ta hänsyn till detta när man bestämmer hur tecken representeras av siffror.

I datorsystem lagras heltal i minnesceller med 8 bitar (1 byte), 16 eller 32 bitar. Varje Unicode-kodningsform bestämmer vilken sekvens av minnesceller representerar ett heltal som motsvarar ett visst tecken. Standarden ger tre olika former av kodning av Unicode-tecken: 8, 16 och 32-bitars block. Följaktligen kallas de UTF-8, UTF-16 och UTF-32. Namnet UTF står för Unicode-omvandlingsformat. Var och en av de tre formerna av kodning är ett lika sätt att representera Unicode-tecken, har fördelar i olika tillämpningar.

Dessa kodningar kan användas för att representera alla tecken i Unicode-standarden. De är sålunda fullständigt kompatibla för lösningar av olika skäl med olika former av kodning. Varje kodning kan omvandlas unikt till någon av de andra två utan att data förloras.

Princip om att inte åläggas

Var och en av Unicode-kodningsformulären är utformad med hänsyn till avvisning av partiell överlappning. Exempelvis genererar Windows-932 tecken från en eller två byte kod. Sekvensens längd beror på den första byten, så de främsta bitvärdena i sekvensen av två byte och en enda byte skär inte. Men värdena för den enkla byten och den avslutande byte av sekvensen kan dock vara desamma. Det betyder till exempel att när du letar efter tecknet D (kod 44) kan du felaktigt hitta den i andra delen av sekvensen med två byte av tecknet "D" (kod 84 44). För att bestämma vilken sekvens som är korrekt måste programmet ta hänsyn till tidigare byte.

Situationen blir mer komplicerad om mästaren och avslutande byte matchar. Detta betyder att omvänd tvetydighet kommer att genomföras en omvänd sökning till början av texten eller en entydig kodsekvens. Detta är inte bara ineffektivt, utan skyddas mot eventuella fel, eftersom en dålig byte är tillräcklig för att hela texten ska kunna läsas oläslig.

Unicode-omvandlingsformatet undviker detta problem eftersom värdena för ledande, bakre och enskilda enheten för informationslagring inte matchar. På grund av detta är alla Unicode-kodningar lämpliga för att söka och jämföra, vilket aldrig ger ett felaktigt resultat på grund av sammanträffandet av olika delar av teckenkoden. Det faktum att dessa kodningsformer överensstämmer med principen om icke-uppdrag särskiljer dem från andra östasiatiska kodningar med flera byte.

En annan aspekt av icke-korsning av Unicode-kodningar är att varje tecken har tydligt definierade gränser. Detta eliminerar behovet av att skanna ett obestämt antal tidigare tecken. Denna funktion av kodningar kallas ibland självsynkronisering. Förvrängning av en enhet kod kommer att leda till snedvridning av endast ett tecken, och omgivande symboler förblir intakta. I 8-bitars omvandlingsformat, om pekaren hänvisar till en byte som börjar med 10xxxxxx (i binär kodning) krävs en till tre omvända övergångar för att söka efter början av tecknet.

konsistens

Unicode-konsortiet stöder helt och hållet alla 3 kodningsformulär. Det är viktigt att inte motsätta sig UTF-8 och Unicode, eftersom alla konverteringsformat är lika legitima implementeringar av Unicode-teckenkodningsformulär.

Byte-orientering

För att representera UTF-32-symbolen behöver du en 32-bitars kodkod som matchar Unicode-koden. UTF-16 - från en till två 16-bitars enheter. Och UTF-8 använder upp till 4 byte.

Kodningen av UTF-8 är utformad för kompatibilitet med byte-orienterade system baserade på ASCII. De flesta av de befintliga mjukvaru- och informationsteknologipraxis har länge lutat på representationen av symboler i form av en sekvens av byte. Många protokoll beror på ASCII-kodningens oväsenlighet och använder eller undviker speciella kontrolltecken. Ett enkelt sätt att anpassa Unicode till sådana situationer är att använda 8-bitars kodning för att representera Unicode-tecken som motsvarar alla ASCII-tecken eller kontrolltecken. För detta är UTF-8-kodning avsedd.

Variabel längd

UTF-8 är en kod med variabel längd som består av 8-bitars informationslagringsenheter vars högordningsbitar anger vilken del av sekvensen varje enskild byte tillhör. En räckvidd av värden är reserverad för det första elementet i kodföljden, den andra för de efterföljande elementen. Detta garanterar ojämn kodning.

ASCII

UTF-8-kodningen stöder fullständigt ASCII-koder (0x00-0x7F). Det betyder att Unicode-tecken U + 0000-U + 007F konverteras till en enda byte 0x00-0x7F UTF-8 och blir så oskiljbara från ASCII. För att undvika tvetydighet används inte värdena 0x00-0x7F längre i någon byte av Unicode-teckenrepresentationen. För att koda andra ideologiska symboler än ASCII används en sekvens av två byte. Symboler i intervallet U + 0800-U + FFFF representeras av tre byte, och ytterligare sådana med koder som är större än U + FFFF kräver fyra byte.

Tillämpningsområde

Kodningen av UTF-8 föredras vanligtvis i HTML-protokollet och liknar den.

XML blev den första standarden med fullt UTF-8-kodningsstöd. Organisationer som är involverade i standardisering rekommenderar det också. Problemet med support i andra adresser än ASCII-tecken löstes när W3C-konsortiet och IETF-teknikgruppen samtyckte till att koda alla webbadresser uteslutande i UTF-8.

Kompatibilitet med ASCII underlättar övergången till ny programvara. Med UTF-8 fungerar de flesta textredigerare, inklusive JEdit, Emacs, BBEdit, Eclipse och Notepad i Windows-operativsystemet. Ingen annan form av Unicode-kodning kan skryta med sådant stöd från verktygen.

Fördelen med kodning är att den består av en sekvens av byte. Med UTF-8-strängar är det enkelt att arbeta i C och andra programmeringsspråk. Detta är den enda formen av kodning som inte kräver märkning av ordningen för BOM-byte eller kodningsdeklarationen i XML.

självsynkronisering

I en miljö med 8-bitars karaktärsbehandling, jämfört med andra multi-byte-kodningar, har UTF-8 följande fördelar:

  • Den första bitmen av kodsekvensen innehåller information om dess längd. Detta ökar effektiviteten av direktsökning.
  • Det är förenklat att hitta början på tecknet, eftersom den initiala byten är begränsad till ett fast värdeområde.
  • Det finns ingen korsning av bitvärdena.

Jämförelse av fördelar

UTF-8-kodningen är kompakt. Men när man ansöker om kodning av östasiatiska tecken (kinesiska, japanska, koreanska, med kinesiska tecken) används 3-bytes-sekvenser. Även UTF-8-kodning är sämre än andra former av kodning genom bearbetningshastighet. En binär strängsortering ger samma resultat som en Unicode-binär sortering.

Teckenkodningsschema

Teckenkodningssystemet består av en teckenkodningsform och en metod för byte-för-pixelarrangemang av kodenheter. För att bestämma kodningsprogrammet enligt Unicode-standarden tillhandahålls användningen av det första byte-ordermärket (BOM, Byte-ordermärke).

När du slår på BOM i UTF-8, begränsas etikettens funktion endast genom att ange användningen av kodningsformuläret. Problemet med att bestämma ordningen för byte i UTF-8 är inte, eftersom dess kodningsenhetstorlek är en byte. Användningen av BOM för denna kodningsform är varken obligatorisk eller rekommenderad. BOM kan förekomma i texter som konverterats från andra kodningar som använder byte-ordermärket eller för UTF-8-kodnings signaturen. Det är en sekvens av 3 byte EF 16 BB 16 BF 16 .

Så här ställer du in UTF-8-kodning

I HTML ställs UTF-8- kodning in med följande kod:

hUVUD

˂meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" ˃

I PHP specificeras UTF-8-kodning med funktionen header () i början av filen efter inställning av värdet på felutgångsnivån:

˂? Php

Error_reporting (-1);

Header ('Content-Type: text / html; charset = utf-8');

För att ansluta till MySQL-databaser är kodningen av UTF-8 inställd enligt följande:

˂? Php

Mysql_set_charset ('utf8');

I CSS-filer specificeras UTF-8 teckenkodning enligt följande:

@charset "utf-8";

När du sparar filer av alla typer väljs UTF-8-kodning utan BOM, annars fungerar inte webbplatsen. För att göra detta, välj menyalternativet "Modifieringar - Sidegenskaper - Titel / Kodning" i DreamWeave-programmet, ändra kodningen till UTF-8. Då bör du ladda om sidan, avmarkera rutan "Anslut Unicode Signatures (BOM)" och tillämpa ändringarna. Om någon text på sidan eller i databasen har angetts av en annan form av kodning måste den skrivas in eller omkodas igen. När du arbetar med reguljära uttryck är det obligatoriskt att använda modifieraren.

Du kan också spara filen i UTF-8-kodningen i Windows Anteckningar. När du har valt menyalternativet "Arkiv - Spara som ..." anger du det nödvändiga kodningsformuläret och sparar filen i UTF-8-kodning.

Om inte kodningen skiljer sig från UTF-8, ändras kodningen och sparas i UTF-8-kodning via menyalternativet "Konvertera till UTF-8 utan BOM" i Notepad ++-textredigeraren.

Det finns inget alternativ

I samband med globaliseringen, när politiska och språkgränser är suddiga, blir teckenuppsättningar som har lokala egenskaper mindre användbara. Unicode är den enda teckenuppsättningen som stöder alla lokaliseringar. Och UTF-8 är ett exempel på korrekt implementering av Unicode, som:

  • Stöder ett brett utbud av verktyg, inklusive kompatibilitet med ASCII-kodning;
  • Har ett motstånd mot datakorruption
  • Lätt och effektivt vid bearbetning
  • Beror inte på plattformen.

Med utkomsten av UTF-8 har diskussioner om vilken form av kodning eller teckenuppsättning som är bättre blivit meningslösa.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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