Co je tento nástroj?
U obyčejného textu ASCII (anglická písmena, číslice, základní interpunkce) je počet znaků a počet bajtů stejné číslo — každý znak zabírá v UTF-8 přesně jeden bajt. Jakmile text obsahuje písmena s diakritikou, čínské/japonské/korejské znaky, azbuku, arabštinu, emoji nebo většinu jiných znaků mimo ASCII, přestává to platit: jeden znak může v UTF-8 zabírat 2, 3 nebo 4 bajty a v UTF-16 2 nebo 4 bajty.
To má význam vždy, když systém omezuje velikost v bajtech, ne v počtu znaků — SMS zprávy, velikosti sloupců databáze, limity payloadu API a některé sociální platformy měří v bajtech, ne ve znacích, takže stejný text může nenápadně překročit limit v závislosti na tom, jaký jazyk nebo symboly obsahuje.
Proč ho používat?
- Zobrazuje počet znaků, bajty UTF-8 a bajty UTF-16 vedle sebe.
- Správně počítá emoji a další znaky mimo Basic Multilingual Plane jako jeden znak, ne dva.
- Aktualizuje se živě během psaní — bez klikání na tlačítko.
- Běží kompletně ve vašem prohlížeči — bez nahrávání.
- Zdarma, bez registrace, bez omezení.
Jak se používá
- Napište nebo vložte text do pole.
- Přečtěte si počet znaků, počet bajtů UTF-8 a počet bajtů UTF-16 pod ním — aktualizují se během psaní.
Příklad
Vstup
Hello, 世界! 🌍Výstup
12 znaků, 19 bajtů UTF-8, 26 bajtů UTF-16Část ASCII („Hello, “ a „! “) zabírá v UTF-8 1 bajt na znak. Každý čínský znak zabírá 3 bajty a emoji zabírá 4 bajty — proto je počet bajtů znatelně vyšší než počet znaků.
Běžné využití
- Kontrola, zda se vícejazyčný popis produktu vejde do sloupce databáze definovaného délkou v bajtech, ne počtem znaků.
- Odhad počtu segmentů SMS, protože SMS se účtují a dělí podle velikosti v bajtech a nelatinský text má jiný limit na segment.
- Ověření, že payload API nebo pole formuláře před odesláním zůstává pod limitem velikosti založeným na bajtech.
- Pochopení, proč řetězec, který „vypadá krátce“, systém s kontrolou délky založenou na bajtech odmítá.
Časté dotazy
Proč si počet znaků a počet bajtů neodpovídají?
Text Unicode se ukládá jako bajty a kolik bajtů každý znak potřebuje, závisí na kódování a na samotném znaku. V UTF-8 zabírají znaky ASCII 1 bajt, většina latinských písmen s diakritikou a azbuky/řečtiny/hebrejštiny/arabštiny zabírá 2 bajty, většina znaků CJK zabírá 3 bajty a emoji obvykle zabírají 4 bajty. Počet znaků prostě počítá symboly bez ohledu na to, jak jsou uloženy.
Který počet bajtů mám použít pro pole s limitem v bajtech?
Použijte takové kódování, jaké systém skutečně používá k ukládání nebo přenosu textu — většina moderních webových API, databází a souborů používá UTF-8, takže relevantní je obvykle počet bajtů UTF-8. Některé starší systémy (jako interní zpracování řetězců ve Windows/Javě) používají UTF-16.
Počítá tento nástroj emoji správně?
Ano. Mnoho emoji je interně uloženo jako dvojice „náhradních“ (surrogate) kódových jednotek UTF-16, které naivní metody počítání spočítají jako 2 znaky. Tento nástroj správně počítá kódové body Unicode, takže emoji se počítá jako 1 znak, což odpovídá tomu, kolik znaků člověk skutečně vidí.
Je to totéž co nástroj Počítadlo slov?
Ne — Počítadlo slov se zaměřuje na počet slov a vět pro účely psaní. Tento nástroj se konkrétně zabývá velikostí v bajtech oproti počtu znaků, což je důležité pro technické limity, ne pro požadavky na počet slov.
Je můj text někam nahráván?
Ne. Počítání probíhá lokálně ve vašem prohlížeči pomocí vestavěného textového kodéru JavaScriptu; na server se nic neodesílá.