Digitális és informatikai

Karakter vagy bájt: miért hosszabb egy ékezetes szöveg UTF-8-ban?

Egy szöveg hossza többféleképpen mérhető. A látható írásjelek, a Unicode-kódpontok, a JavaScript UTF-16-kódegységei és az UTF-8-bájtok száma eltérhet. Importálásnál vagy méretkorlátnál előbb azt kell tisztázni, melyiket ellenőrzi a rendszer.

Dajka Gábor3 perc olvasás

Egy szöveg hossza többféleképpen mérhető. A látható írásjelek, a Unicode-kódpontok, a JavaScript UTF-16-kódegységei és az UTF-8-bájtok száma eltérhet. Importálásnál vagy méretkorlátnál előbb azt kell tisztázni, melyiket ellenőrzi a rendszer.

Ugyanaz a szó két számlálásban

A „tükör” szó öt betűből áll. A szokásos, előre összeállított ékezetes karakterekkel UTF-8-ban hét bájt: a t, k és r egy-egy, az ü és ö két-két bájtot foglal. Az „alma” négy karaktere négy bájt ugyanebben a kódolásban.

Egy 😀 jel egy Unicode-kódpont, UTF-8-ban négy bájt, JavaScriptben a szokásos length tulajdonság szerint két UTF-16-kódegység. Ezért ugyanarra a szövegre több, önmagában helyes hosszadat is adódhat.

Mit számol a TextEncoder?

A böngészős TextEncoder UTF-8-bájtokra alakítja a szöveget. A kapott tömb hossza a kódolt bájtszám. A „tükör” példánál new TextEncoder().encode('tükör').length eredménye 7 a fent leírt karakteralakokkal.

A látható „é” egyetlen előre összeállított kódpontként vagy e és kombináló ékezet összekapcsolásával is előállhat. A két forma hasonlóan látszhat, miközben a bájtsora eltér. A Unicode-normalizálás ezt sok esetben egységesítheti, de csak tudatosan megválasztott szövegfeldolgozási lépésként alkalmazd.

Melyik számot használd?

Fájlméretnél a bájtszám, felhasználói szövegkorlátnál a szabály szerint meghatározott karakterfogalom számít. Egy tízbájtos adatmezőbe öt többbájtos jel már nem feltétlenül fér be. Bájt közepén történő vágás sérült kódolást okozhat.

A szövegstatisztikai eszköz eredményénél nézd meg a számlálás definícióját. Tesztelj sima latin betűt, magyar ékezetet, emojit és sortörést is. Ezekből gyorsan kiderül, hogy a célrendszer a számodra megfelelő hosszúságot méri-e.

Kapcsolódó DG Kalkulátor megnyitása

Forrás és módszertani háttér

A számpéldák saját szemléltető számítások.

Saját, végigvezetett számítási példa; a képlet és a modell feltételei a szövegben szerepelnek.

Háromkérdéses tudáspróba

Minden kérdésnél egy választ jelölj meg. A kiértékelés a cikk megértését ellenőrzi.

1. Hány UTF-8-bájt az „alma”?

  • A) 2
  • B) 8
  • C) 4

2. A „tükör” a cikkben használt alakban hány bájt?

  • A) 7
  • B) 5
  • C) 10

3. Fájlméret-korlátnál melyik adat az elsődleges?

  • A) A szavak száma
  • B) A kódolt bájtmennyiség
  • C) Csak a látható betűk száma

Megoldások és önálló pontozás

Minden helyes válasz 1 pont. 3 pont: a három összefüggést helyesen alkalmaztad; 2 pont: nézd át a téves válaszhoz tartozó részt; 0–1 pont: számold végig újra a példát. A rövid próba kizárólag e cikk tanulságaira vonatkozik.

1. Hány UTF-8-bájt az „alma”?

C) 4 – Mind a négy ASCII-betű egy bájt.

2. A „tükör” a cikkben használt alakban hány bájt?

A) 7 – Három egybájtos és két kétbájtos karakterből áll.

3. Fájlméret-korlátnál melyik adat az elsődleges?

B) A kódolt bájtmennyiség – Az adattárolás és továbbítás a tényleges bájtokat kezeli.

További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás