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.