Čo je tento nástroj?
Pri čistom ASCII texte (anglické písmená, číslice, základná interpunkcia) je počet znakov a počet bajtov rovnaký — každý znak zaberá presne jeden bajt v UTF-8. Akonáhle text obsahuje písmená s diakritikou, čínske/japonské/kórejské znaky, cyriliku, arabčinu, emoji alebo väčšinu ostatných znakov mimo ASCII, prestáva to platiť: jeden znak môže zabrať 2, 3 alebo 4 bajty v UTF-8 a 2 alebo 4 bajty v UTF-16.
Toto je dôležité vždy, keď má systém limit v bajtoch, nie v znakoch — SMS správy, veľkosti stĺpcov v databázach, limity API payloadu a niektoré sociálne platformy merajú v bajtoch, nie v znakoch, takže rovnaký text môže potichu prekročiť limit v závislosti od jazyka alebo symbolov, ktoré obsahuje.
Prečo ho používať?
- Zobrazuje počet znakov, UTF-8 bajty a UTF-16 bajty vedľa seba.
- Správne počíta emoji a iné znaky mimo Basic Multilingual Plane ako jeden znak, nie dva.
- Aktualizuje sa naživo počas písania — netreba klikať na žiadne tlačidlo.
- Beží úplne v prehliadači — bez nahrávania na server.
- Zadarmo, bez registrácie, bez limitov.
Ako sa používa
- Napíšte alebo vložte text do poľa.
- Prečítajte si počet znakov, počet UTF-8 bajtov a počet UTF-16 bajtov pod ním — aktualizujú sa počas písania.
Príklad
Vstup
Hello, 世界! 🌍Výstup
12 znakov, 19 UTF-8 bajtov, 26 UTF-16 bajtovASCII časť ("Hello, " a "! ") zaberá 1 bajt na znak v UTF-8. Každý čínsky znak zaberá 3 bajty a emoji zaberá 4 bajty — preto je počet bajtov citeľne vyšší ako počet znakov.
Bežné použitie
- Overenie, či sa viacjazyčný popis produktu zmestí do stĺpca databázy definovaného dĺžkou v bajtoch, nie počtom znakov.
- Odhad využitia SMS segmentov, keďže SMS sa účtuje a delí podľa veľkosti v bajtoch a text mimo latinky má iný limit na segment.
- Overenie, že API payload alebo pole formulára zostáva pod limitom veľkosti založeným na bajtoch pred odoslaním.
- Pochopenie, prečo je reťazec, ktorý "vyzerá krátko", zamietnutý systémom s kontrolou dĺžky založenou na bajtoch.
Časté otázky
Prečo sa počet znakov a počet bajtov nezhodujú?
Unicode text sa ukladá ako bajty a počet bajtov potrebných na znak závisí od kódovania a samotného znaku. V UTF-8 zaberajú ASCII znaky 1 bajt, väčšina latinských písmen s diakritikou a cyrilika/gréčtina/hebrejčina/arabčina zaberajú 2 bajty, väčšina CJK znakov zaberá 3 bajty a emoji zvyčajne zaberajú 4 bajty. Počet znakov jednoducho počíta symboly bez ohľadu na to, ako sú uložené.
Ktorý počet bajtov by som mal použiť pre pole s limitom v bajtoch?
Použite kódovanie, ktoré systém skutočne používa na ukladanie alebo prenos textu — väčšina moderných webových API, databáz a súborov používa UTF-8, takže počet UTF-8 bajtov je zvyčajne relevantný. Niektoré staršie systémy (napríklad interné spracovanie reťazcov vo Windows/Jave) používajú UTF-16.
Počíta tento nástroj emoji správne?
Áno. Mnohé emoji sú interne uložené ako dvojica UTF-16 "náhradných" (surrogate) kódových jednotiek, ktoré naivné metódy počítania rátajú ako 2 znaky. Tento nástroj správne počíta Unicode kódové body, takže emoji sa počíta ako 1 znak, čo zodpovedá tomu, koľko znakov človek skutočne vidí.
Je toto to isté ako nástroj Počítadlo slov?
Nie — Počítadlo slov sa zameriava na počet slov a viet pre písanie textu. Tento nástroj sa venuje výhradne veľkosti v bajtoch oproti počtu znakov, čo je dôležité pre technické limity, nie pre požiadavky na počet slov.
Nahráva sa môj text niekam?
Nie. Počítanie prebieha lokálne vo vašom prehliadači pomocou vstavaného textového kodéra JavaScriptu; nič sa neposiela na server.