Mi ez az eszköz?
Egyszerű ASCII szöveg esetén (angol betűk, számjegyek, alapvető írásjelek) a karakterszám és a bájtszám ugyanaz a szám — minden karakter pontosan egy bájtot foglal el UTF-8-ban. Amint a szöveg ékezetes betűket, kínai/japán/koreai karaktereket, cirill betűket, arab írást, emojikat vagy más nem ASCII karaktereket tartalmaz, ez már nem igaz: egyetlen karakter 2, 3 vagy 4 bájtot foglalhat el UTF-8-ban, és 2 vagy 4 bájtot UTF-16-ban.
Ez akkor számít, amikor egy rendszernek bájtkorlátja van, nem karakterkorlátja — az SMS-üzenetek, az adatbázis-oszlopok mérete, az API-payload korlátok és néhány közösségi platform is bájtban méri, nem karakterben, így ugyanaz a szövegrészlet észrevétlenül átléphet egy korlátot attól függően, milyen nyelvet vagy szimbólumokat tartalmaz.
Miért érdemes használni?
- Egymás mellett mutatja a karakterszámot, az UTF-8 bájtokat és az UTF-16 bájtokat.
- Az emojikat és a Basic Multilingual Plane-en kívüli más karaktereket helyesen egyetlen karakterként számolja, nem kettőként.
- Élőben frissül gépelés közben — nincs szükség gombnyomásra.
- Teljes egészében a böngésződben fut — nincs feltöltés.
- Ingyenes, regisztráció nélkül, korlátozás nélkül.
Használati útmutató
- Írj be vagy illessz be szöveget a mezőbe.
- Olvasd le alatta a karakterszámot, az UTF-8 bájtszámot és az UTF-16 bájtszámot — ezek gépelés közben frissülnek.
Példa
Bemenet
Hello, 世界! 🌍Kimenet
12 karakter, 19 UTF-8 bájt, 26 UTF-16 bájtAz ASCII rész („Hello, ” és „! ”) UTF-8-ban karakterenként 1 bájtot foglal el. Minden kínai karakter 3 bájtot foglal el, az emoji pedig 4 bájtot — ezért a bájtszám észrevehetően magasabb, mint a karakterszám.
Gyakori felhasználási módok
- Annak ellenőrzése, hogy egy többnyelvű termékleírás elfér-e egy olyan adatbázis-oszlopban, amelyet bájthossz, nem karakterszám alapján definiáltak.
- Az SMS-szegmensek felhasználásának becslése, mivel az SMS-t bájtméret alapján számlázzák és bontják szegmensekre, a nem latin szöveg pedig más szegmensenkénti korlátot használ.
- Annak ellenőrzése, hogy egy API-payload vagy űrlapmező a beküldés előtt a bájt alapú méretkorlát alatt marad-e.
- Annak megértése, hogy egy „rövidnek tűnő” karakterlánc miért utasítja el egy olyan rendszer, amely bájt alapú hosszellenőrzést végez.
Gyakori kérdések
Miért nem egyezik a karakterszám és a bájtszám?
A Unicode szöveg bájtokként van tárolva, és hogy egy karakter hány bájtot igényel, az a kódolástól és magától a karaktertől függ. UTF-8-ban az ASCII karakterek 1 bájtot, a legtöbb ékezetes latin betű és a cirill/görög/héber/arab betűk 2 bájtot, a legtöbb CJK karakter 3 bájtot, az emojik pedig jellemzően 4 bájtot foglalnak el. A karakterszám egyszerűen a szimbólumokat számolja, függetlenül attól, hogyan tárolják őket.
Melyik bájtszámot használjam egy bájtkorlátos mezőhöz?
Azt a kódolást használd, amit a rendszer ténylegesen használ a szöveg tárolására vagy továbbítására — a legtöbb modern webes API, adatbázis és fájl UTF-8-at használ, így általában az UTF-8 bájtszám a releváns. Néhány régebbi rendszer (mint a Windows/Java belső szövegkezelése) UTF-16-ot használ.
Helyesen számolja ez az eszköz az emojikat?
Igen. Sok emoji belsőleg egy pár UTF-16 „helyettesítő” (surrogate) kódegységként van tárolva, amit a naiv számlálási módszerek 2 karakterként számolnak. Ez az eszköz helyesen számolja a Unicode kódpontokat, így egy emoji 1 karakterként számít, ami megfelel annak, hány karaktert lát ténylegesen egy ember.
Ugyanaz ez, mint a Szószámláló eszköz?
Nem — a Szószámláló a szó- és mondatszámra összpontosít íráshoz. Ez az eszköz kifejezetten a bájtméretről szól a karakterszámhoz képest, ami a technikai korlátoknál számít, nem a szószámra vonatkozó követelményeknél.
Feltöltődik valahova a szövegem?
Nem. A számolás helyben, a böngésződben történik a JavaScript beépített szövegkódolójával; semmi sem kerül elküldésre egy szervernek.