Što je ovaj alat?
Za obični ASCII tekst (engleska slova, brojke, osnovnu interpunkciju) broj znakova i broj bajtova su isti broj — svaki znak u UTF-8 kodiranju zauzima točno jedan bajt. Čim tekst sadrži naglašena slova, kineske/japanske/korejske znakove, ćirilicu, arapsko pismo, emojije ili većinu drugih znakova izvan ASCII skupa, to više ne vrijedi: jedan znak može zauzeti 2, 3 ili 4 bajta u UTF-8, odnosno 2 ili 4 bajta u UTF-16.
Ovo je važno kad god sustav ima ograničenje izraženo u bajtovima, a ne u znakovima — SMS poruke, veličine stupaca u bazama podataka, ograničenja veličine API payloada i neke društvene platforme mjere se u bajtovima, ne u znakovima, pa isti komad teksta može neprimjetno premašiti ograničenje ovisno o jeziku ili simbolima koje sadrži.
Zašto ga koristiti?
- Prikazuje broj znakova, UTF-8 bajtove i UTF-16 bajtove jedno pored drugog.
- Ispravno broji emojije i druge znakove izvan Basic Multilingual Plane kao jedan znak, a ne dva.
- Ažurira se uživo dok tipkate — nema gumba na koji treba kliknuti.
- Radi u potpunosti u vašem pregledniku — bez prijenosa podataka na poslužitelj.
- Besplatno, bez registracije, bez ograničenja.
Kako ga koristiti
- Utipkajte ili zalijepite tekst u polje.
- Pročitajte broj znakova, broj UTF-8 bajtova i broj UTF-16 bajtova ispod njega — ažuriraju se dok tipkate.
Primjer
Ulaz
Hello, 世界! 🌍Izlaz
12 znakova, 19 UTF-8 bajtova, 26 UTF-16 bajtovaASCII dio ("Hello, " i "! ") zauzima 1 bajt po znaku u UTF-8. Svaki kineski znak zauzima 3 bajta, a emoji zauzima 4 bajta — zato je broj bajtova znatno veći od broja znakova.
Uobičajene primjene
- Provjera hoće li višejezični opis proizvoda stati u stupac baze podataka definiran duljinom u bajtovima, a ne brojem znakova.
- Procjena broja SMS segmenata, budući da se SMS naplaćuje i dijeli prema veličini u bajtovima, a tekst koji nije na latinici ima drugačije ograničenje po segmentu.
- Provjera da API payload ili polje obrasca ostane unutar ograničenja veličine izraženog u bajtovima prije slanja.
- Razumijevanje zašto niz znakova koji "izgleda kratko" sustav odbija zbog provjere duljine temeljene na bajtovima.
Često postavljana pitanja
Zašto se broj znakova i broj bajtova ne podudaraju?
Unicode tekst se pohranjuje kao niz bajtova, a koliko bajtova treba svaki znak ovisi o kodiranju i samom znaku. U UTF-8 kodiranju ASCII znakovi zauzimaju 1 bajt, većina naglašenih latiničnih slova te ćirilična, grčka, hebrejska i arapska slova zauzimaju 2 bajta, većina CJK znakova zauzima 3 bajta, a emojiji obično zauzimaju 4 bajta. Broj znakova jednostavno broji simbole, bez obzira na to kako su pohranjeni.
Koji broj bajtova trebam koristiti za polje s ograničenjem u bajtovima?
Koristite ono kodiranje koje sustav stvarno koristi za pohranu ili prijenos teksta — većina modernih web API-ja, baza podataka i datoteka koristi UTF-8, pa je obično relevantan broj UTF-8 bajtova. Neki stariji sustavi (poput internog rukovanja nizovima u Windowsu/Javi) koriste UTF-16.
Broji li ovaj alat ispravno emojije?
Da. Mnogi emojiji se interno pohranjuju kao par UTF-16 "surogatnih" jedinica koda, koje naivne metode brojanja broje kao 2 znaka. Ovaj alat ispravno broji Unicode kodne točke, pa se emoji broji kao 1 znak, u skladu s onim koliko znakova osoba stvarno vidi.
Je li ovo isto što i alat Brojač riječi?
Ne — Brojač riječi usmjeren je na broj riječi i rečenica za potrebe pisanja. Ovaj alat konkretno se bavi veličinom u bajtovima naspram broja znakova, što je važno za tehnička ograničenja, a ne za zahtjeve vezane uz broj riječi.
Prenosi li se moj tekst negdje?
Ne. Brojanje se odvija lokalno u vašem pregledniku pomoću ugrađenog JavaScript enkodera teksta; ništa se ne šalje na poslužitelj.