CodeKitHub
Szöveges eszközök

Bájtszámláló — karakterszám vs. bájtméret

Utolsó frissítés:

Írj be vagy illessz be szöveget, és élőben láthatod, hány karaktert tartalmaz ahhoz képest, hány bájtot foglal el ténylegesen UTF-8-ban és UTF-16-ban — a két szám azonnal eltér egymástól, amint nem ASCII karakterek (ékezetek, CJK szöveg, emoji) kerülnek a képbe.

0
Characters
0
UTF-8 bytes
0
UTF-16 bytes

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ó

  1. Írj be vagy illessz be szöveget a mezőbe.
  2. 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ájt

Az 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.

Kapcsolódó eszközök