CodeKitHub
Besedilna orodja

Števec bajtov — Število znakov proti velikosti v bajtih

Nazadnje posodobljeno:

Vtipkajte ali prilepite besedilo in v živo spremljajte, koliko znakov vsebuje v primerjavi s tem, koliko bajtov dejansko zavzame v UTF-8 in UTF-16 — številki se razlikujeta takoj, ko se pojavijo znaki zunaj ASCII (naglasi, besedilo CJK, emojiji).

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

Kaj je to orodje?

Pri navadnem besedilu ASCII (angleške črke, števke, osnovna ločila) sta število znakov in število bajtov enaka — vsak znak zavzame v UTF-8 natanko en bajt. Ko besedilo vsebuje naglašene črke, kitajske/japonske/korejske znake, cirilico, arabščino, emojije ali večino drugih znakov zunaj ASCII, to ne velja več: en sam znak lahko zavzame 2, 3 ali 4 bajte v UTF-8 ter 2 ali 4 bajte v UTF-16.

To je pomembno, kadar ima sistem omejitev v bajtih in ne v znakih — SMS-sporočila, velikosti stolpcev v podatkovnih bazah, omejitve tovora API in nekatere družbene platforme merijo v bajtih, ne v znakih, zato lahko isto besedilo tiho preseže omejitev, odvisno od jezika ali simbolov, ki jih vsebuje.

Zakaj ga uporabiti?

  • Prikaže število znakov, bajte UTF-8 in bajte UTF-16 drug ob drugem.
  • Pravilno šteje emojije in druge znake zunaj Basic Multilingual Plane kot en znak, ne dva.
  • Posodablja se v živo med tipkanjem — brez gumba za klik.
  • Deluje v celoti v vašem brskalniku — brez nalaganja.
  • Brezplačno, brez registracije, brez omejitev.

Kako ga uporabljati

  1. Vtipkajte ali prilepite besedilo v polje.
  2. Preberite število znakov, število bajtov UTF-8 in število bajtov UTF-16 spodaj — posodabljajo se med tipkanjem.

Primer

Vnos

Hello, 世界! 🌍

Rezultat

12 znakov, 19 bajtov UTF-8, 26 bajtov UTF-16

Del ASCII ("Hello, " in "! ") v UTF-8 zavzame 1 bajt na znak. Vsak kitajski znak zavzame 3 bajte, emoji pa zavzame 4 bajte — zato je število bajtov opazno višje od števila znakov.

Pogoste uporabe

  • Preverjanje, ali se večjezični opis izdelka prilega stolpcu podatkovne baze, določenemu z dolžino v bajtih in ne s številom znakov.
  • Ocenjevanje porabe segmentov SMS, saj se SMS zaračunava in deli glede na velikost v bajtih, nelatinično besedilo pa ima drugačno omejitev na segment.
  • Preverjanje, da tovor API ali polje obrazca pred oddajo ostane pod omejitvijo velikosti, ki temelji na bajtih.
  • Razumevanje, zakaj sistem z omejitvijo dolžine, ki temelji na bajtih, zavrne niz, ki "izgleda kratek".

Pogosta vprašanja

Zakaj se število znakov in število bajtov ne ujemata?

Besedilo Unicode je shranjeno kot bajti, koliko bajtov pa vsak znak potrebuje, je odvisno od kodiranja in samega znaka. V UTF-8 znaki ASCII zavzamejo 1 bajt, večina naglašenih latiničnih črk ter cirilica/grščina/hebrejščina/arabščina zavzame 2 bajta, večina znakov CJK zavzame 3 bajte, emojiji pa običajno zavzamejo 4 bajte. Število znakov preprosto šteje simbole, ne glede na to, kako so shranjeni.

Katero število bajtov naj uporabim za polje z omejitvijo bajtov?

Uporabite kodiranje, ki ga sistem dejansko uporablja za shranjevanje ali prenos besedila — večina sodobnih spletnih API-jev, podatkovnih baz in datotek uporablja UTF-8, zato je običajno relevantno število bajtov UTF-8. Nekateri starejši sistemi (kot je notranje ravnanje z nizi v Windows/Java) uporabljajo UTF-16.

Ali to orodje pravilno šteje emojije?

Da. Številni emojiji so notranje shranjeni kot par "nadomestnih" (surrogate) kodnih enot UTF-16, ki jih naivne metode štetja štejejo kot 2 znaka. To orodje pravilno šteje kodne točke Unicode, zato je emoji preštet kot 1 znak, kar ustreza temu, koliko znakov oseba dejansko vidi.

Je to enako kot orodje Števec besed?

Ne — Števec besed se osredotoča na število besed in stavkov za pisanje. To orodje se posveča izključno velikosti v bajtih v primerjavi s številom znakov, kar je pomembno za tehnične omejitve, ne za zahteve glede števila besed.

Ali se moje besedilo naloži kam?

Ne. Štetje poteka lokalno v vašem brskalniku z vgrajenim kodirnikom besedila v JavaScriptu; nič se ne pošlje na strežnik.

Sorodna orodja