CodeKitHub
Strumenti di testo

Contatore di byte — Caratteri vs dimensione in byte

Ultimo aggiornamento:

Digita o incolla un testo e osserva, in tempo reale, quanti caratteri contiene rispetto a quanti byte occupa davvero in UTF-8 e UTF-16 — i due numeri divergono non appena entrano in gioco caratteri non ASCII (accenti, testo CJK, emoji).

0
Caratteri
0
Byte UTF-8
0
Byte UTF-16

Che cos'è questo strumento?

Per il testo ASCII puro (lettere inglesi, cifre, punteggiatura di base), il numero di caratteri e il numero di byte coincidono — ogni carattere occupa esattamente un byte in UTF-8. Appena il testo include lettere accentate, caratteri cinesi/giapponesi/coreani, cirillico, arabo, emoji, o la maggior parte degli altri caratteri non ASCII, questo non è più vero: un singolo carattere può occupare 2, 3 o 4 byte in UTF-8, e 2 o 4 byte in UTF-16.

Questo conta ogni volta che un sistema ha un limite in byte anziché in caratteri — messaggi SMS, dimensioni delle colonne dei database, limiti di payload delle API, e alcune piattaforme social misurano tutte in byte, non in caratteri, quindi lo stesso testo può superare silenziosamente un limite a seconda della lingua o dei simboli che contiene.

Perché usarlo?

  • Un campo bio in stile Twitter/X ha un limite in byte, non in caratteri, e il tuo nome contiene un'emoji — scrivilo qui per vedere il costo reale in byte prima che il modulo lo tronchi senza avvisarti.
  • La colonna del database della tua app è definita come VARCHAR(255) in byte, e un titolo prodotto in giapponese o arabo che "sembra corto" continua a essere rifiutato — incollalo qui per capire perché sta usando 3 volte i byte di un titolo in caratteri latini.
  • Stai stimando quanti segmenti SMS userà un messaggio marketing multilingue — dato che gli operatori fatturano e dividono per dimensione in byte, controllare qui il conteggio UTF-8/UTF-16 batte l'indovinare e ritrovarsi con una bolletta più alta del previsto.
  • Un'API restituisce un criptico errore "payload too large" su un campo JSON con un validatore rigido sulla lunghezza in byte, e la stringa sembrava a posto nel tuo editor — questo ti mostra esattamente quanti byte costa davvero quella stringa.
  • Stai confrontando perché la stessa frase occupa più spazio di archiviazione in una lingua rispetto a un'altra — digita ogni versione e osserva il conteggio in byte UTF-8 salire per il testo CJK o arabo rispetto alla versione in puro ASCII.
  • Devi verificare se un'emoji in un nome utente viene contata come uno o due caratteri da una regola di validazione pignola — questo strumento la conta come la vedrebbe una persona, così puoi capire se l'altro sistema sta sbagliando.

Come si usa

  1. Digita o incolla il testo nel campo.
  2. Leggi il numero di caratteri, il numero di byte UTF-8, e il numero di byte UTF-16 sotto — si aggiornano mentre digiti.

Esempio

Input

Hello, 世界! 🌍

Risultato

12 caratteri, 19 byte UTF-8, 26 byte UTF-16

La parte ASCII ("Hello, " e "! ") occupa 1 byte per carattere in UTF-8. Ogni carattere cinese occupa 3 byte, e l'emoji occupa 4 byte — ecco perché i conteggi in byte sono notevolmente più alti del numero di caratteri.

Dimensione in byte UTF-8 per tipo di carattere

La tabella sotto mostra il tipico costo in byte UTF-8 per categoria di carattere — utile per stimare quanto peserà davvero un testo multilingue prima di incollarlo tutto.

Tipo di carattereEsempioByte UTF-8Byte UTF-16
Lettera/cifra ASCIIA, 712
Latino accentato (é, ñ, ü)é22
Cirillico / Greco / Ebraico / Araboд, α, א22
CJK (cinese, giapponese, coreano)32
La maggior parte delle emoji (fuori BMP)🌍44

Usi comuni

  • Verificare se una descrizione di prodotto multilingue starà in una colonna di database definita per lunghezza in byte anziché numero di caratteri.
  • Stimare l'uso dei segmenti SMS, dato che gli SMS sono fatturati e suddivisi per dimensione in byte, e il testo non latino usa un limite per segmento diverso.
  • Verificare che un payload API o un campo di modulo resti sotto un limite di dimensione basato sui byte prima dell'invio.
  • Capire perché una stringa che "sembra corta" viene rifiutata da un sistema con un controllo di lunghezza basato sui byte.

Domande frequenti

Perché il numero di caratteri e il numero di byte non coincidono?

Il testo Unicode è memorizzato come byte, e quanti byte serve a ciascun carattere dipende dalla codifica e dal carattere stesso. In UTF-8, i caratteri ASCII occupano 1 byte, la maggior parte delle lettere latine accentate e cirillico/greco/ebraico/arabo occupano 2 byte, la maggior parte dei caratteri CJK occupano 3 byte, e le emoji tipicamente occupano 4 byte. Il numero di caratteri conta semplicemente i simboli, ignorando come vengono memorizzati.

Quale conteggio di byte dovrei usare per un campo limitato in byte?

Usa qualunque codifica il sistema utilizzi realmente per memorizzare o trasmettere il testo — la maggior parte delle moderne API web, database e file usano UTF-8, quindi il conteggio in byte UTF-8 è di solito quello rilevante. Alcuni sistemi più vecchi (come la gestione interna delle stringhe di Windows/Java) usano UTF-16.

Questo conta correttamente le emoji?

Sì. Molte emoji sono memorizzate internamente come una coppia di unità di codice "surrogate" UTF-16, che i metodi di conteggio ingenui contano come 2 caratteri. Questo strumento conta correttamente i punti di codice Unicode, quindi un'emoji viene contata come 1 carattere, corrispondendo a quanti caratteri una persona vede realmente.

È la stessa cosa dello strumento Contatore di parole?

No — il Contatore di parole si concentra sul conteggio di parole e frasi per la scrittura. Questo strumento riguarda specificamente la dimensione in byte rispetto al numero di caratteri, che conta per i limiti tecnici anziché per i requisiti sul numero di parole.

Il mio testo viene caricato da qualche parte?

No. Il conteggio avviene localmente nel tuo browser usando l'encoder di testo integrato di JavaScript; nulla viene inviato a un server.

Perché lo stesso carattere occupa un numero diverso di byte in UTF-8 rispetto a UTF-16?

Le due codifiche usano regole completamente diverse per mappare i punti di codice sui byte. UTF-8 usa da 1 a 4 byte a seconda del carattere, ottimizzato in modo che l'ASCII resti a 1 byte. UTF-16 usa 2 byte per la maggior parte dei caratteri e 4 byte solo per quelli fuori dal Piano Multilingue di Base (come la maggior parte delle emoji) — quindi un carattere cinese è 3 byte in UTF-8 ma solo 2 in UTF-16, mentre un'emoji è 4 byte in entrambi.

Un'emoji con tono di pelle o famiglia (composta da più caratteri uniti) viene contata correttamente?

Lo strumento conta i punti di codice Unicode, quindi un'emoji composta da più punti di codice uniti da uno zero-width joiner (come un'emoji famiglia) viene contata come diversi caratteri, non uno — rispecchiando come il testo è effettivamente codificato, anche se viene visualizzata come un singolo glifo.

Qual è la differenza tra conteggio byte UTF-8 e conteggio caratteri per un testo in inglese semplice?

Per testo inglese standard che usa solo lettere ASCII, cifre, spazi e punteggiatura di base, sono identici — ogni carattere è esattamente 1 byte in UTF-8. Il divario compare solo quando si aggiungono lettere accentate, simboli o scritture non latine.

Posso usarlo per verificare esattamente i limiti di caratteri di Twitter/X o SMS?

Questo strumento fornisce conteggi grezzi di caratteri e byte, che sono la base su cui si costruiscono quei limiti, ma le piattaforme a volte applicano regole di ponderazione proprie (ad esempio contando certe emoji o URL come un numero fisso di caratteri indipendentemente dalla lunghezza reale) — controlla le regole specifiche della piattaforma per i casi limite, e usa questo strumento per capire il costo in byte sottostante.

Perché dovrei usare questo invece del contatore di caratteri integrato nel mio editor di testo?

La maggior parte degli editor conta solo i caratteri, non i byte per codifica — se il limite che devi rispettare è espresso in byte (come spesso accade per SMS, colonne di database o payload API), il conteggio caratteri del tuo editor non ti dice nulla sul limite reale che stai per superare.

Strumenti correlati