En forklaring på kodning af unicode-tegn

click fraud protection

For at en computer skal kunne gemme tekst og numre, som mennesker kan forstå, skal der være en kode, der transformerer tegn i tal. Unicode-standarden definerer en sådan kode ved hjælp af tegnkodning.

Årsagens karakterkodning er så vigtig, så at enhver enhed kan vise de samme oplysninger. Et tilpasset tegnkodningsskema fungerer muligvis strålende på en computer, men der opstår problemer, hvis du sender den samme tekst til en anden. Det ved ikke, hvad du taler om, medmindre det også forstår kodningsskemaet.

Tegnkodning

Alt tegnkodning gør, er at tildele et nummer til hvert tegn, der kan bruges. Du kan oprette en karakterkodning lige nu.

For eksempel kunne jeg sige, at brevet EN bliver tallet 13, a = 14, 1 = 33, # = 123 og så videre.

Det er her, branchen dækker standarder. Hvis hele computerbranchen bruger det samme tegnkodningsskema, kan hver computer vise de samme tegn.

Hvad er Unicode?

ASCII (amerikansk standardkode for informationsudveksling) blev det første udbredte kodningsskema. Det er dog begrænset til kun 128 tegnsdefinitioner. Dette er fint for de mest almindelige engelske tegn, tal og tegnsætning, men er en smule begrænsende for resten af ​​verden.

instagram viewer

Naturligvis ønsker resten af ​​verden det samme kodningsskema for deres figurer. Dog lidt, mens afhængigt af hvor du var, kunne der dog have været vist en anden karakter for den samme ASCII-kode.

I sidste ende begyndte de andre dele af verden at oprette deres egne kodningsordninger, og tingene begyndte at blive lidt forvirrende. Ikke kun var kodningsskemaerne i forskellige længder, programmer var nødvendige for at finde ud af, hvilket kodeskema de skulle bruge.

Det viste sig, at der var behov for et nyt tegnkodningsskema, som var, da Unicode-standarden blev oprettet. Målet med Unicode er at forene alle de forskellige kodningsskemaer, så forvirringen mellem computere kan begrænses så meget som muligt.

I disse dage definerer Unicode-standarden værdier for over 128.000 tegn og kan ses på Unicode Consortium. Det har flere karakterkodningsformer:

  • UTF-8: Brug kun en byte (8 bit) til at kode engelske tegn. Det kan bruge en sekvens af bytes til at kode andre tegn. UTF-8 er vidt brugt i e-mail-systemer og på internettet.
  • UTF-16: Bruger to bytes (16 bit) til at kode de mest almindeligt anvendte tegn. Om nødvendigt kan de ekstra tegn repræsenteres med et par 16-bitnumre.
  • UTF-32: Bruger fire bytes (32 bit) til at kode tegnene. Det viste sig, at når Unicode-standarden voksede, er et 16-bit-tal for lille til at repræsentere alle tegn. UTF-32 er i stand til at repræsentere hvert Unicode-tegn som ét nummer.

Bemærk: UTF betyder Unicode Transformation Unit.

Kode point

Et kodepunkt er den værdi, som et tegn er givet i Unicode-standarden. Værdierne i henhold til Unicode er skrevet som hexadecimale tal og har en præfiks på U +.

For at kode for de tegn, vi kiggede på tidligere:

  • EN er U + 0041
  • -en er U + 0061
  • 1 er U + 0031
  • # er U + 0023

Disse kodepunkter er opdelt i 17 forskellige sektioner kaldet planer, der identificeres ved numrene 0 til 16. Hvert fly har 65.536 kodepunkter. Det første plan, 0, indeholder de mest anvendte tegn og er kendt som det grundlæggende flersprogede plan (BMP).

Kodenheder

Kodningsskemaerne består af kodeenheder, der bruges til at tilvejebringe et indeks, hvor et tegn er placeret i et plan.

Overvej UTF-16 som et eksempel. Hvert 16-bit-nummer er en kodeenhed. Kodenhederne kan omdannes til kodepunkter. F.eks. Har det flade note-symbol ♭ et kodepunkt på U + 1D160 og lever på det andet plan i Unicode-standarden (Supplerende Ideografisk Plan). Det vil blive kodet ved hjælp af kombinationen af ​​16-bit-kodenhederne U + D834 og U + DD60.

For BMP er værdierne for kodepunkter og kodeenheder identiske. Dette tillader en genvej til UTF-16, der sparer meget lagerplads. Det behøver kun at bruge et 16-bit-nummer til at repræsentere disse tegn.

Hvordan bruger Java Unicode?

Java blev oprettet omkring det tidspunkt, hvor Unicode-standarden havde definerede værdier for et meget mindre sæt tegn. Dengang mente man, at 16-bit ville være mere end nok til at kode alle de tegn, der nogensinde ville være behov for. Med det for øje var Java designet til at bruge UTF-16. Char-datatypen blev oprindeligt brugt til at repræsentere et 16-bit Unicode-kodepunkt.

Siden Java SE v5.0 repræsenterer char en kodenhed. Det gør lille forskel for at repræsentere tegn, der er i det grundlæggende flersprogede plan, fordi værdien af ​​kodeenheden er den samme som kodepunktet. Det betyder dog, at to tegn på de andre planer er nødvendige for tegnene.

Den vigtige ting at huske er, at en enkelt char-datatype ikke længere kan repræsentere alle Unicode-tegn.

instagram story viewer