Come si contano parole e caratteri
Incolla lo stesso testo in due app e potresti ottenere due conteggi diversi. Nessuno dei due è necessariamente sbagliato: stanno contando cose diverse. Questa guida spiega le unità più comuni e perché i numeri differiscono.
Quattro modi di contare i caratteri
I computer memorizzano il testo in Unicode, e un "carattere" può essere misurato a diversi livelli:
- I cluster di grafemi sono ciò che un lettore vede come un solo carattere, come "é", "한" o "👍🏽".
- I code point sono i singoli valori Unicode. Un carattere visibile può essere composto da più code point.
- Le unità di codice UTF-16 sono ciò che contano la proprietà
lengthdi JavaScript e diversi altri linguaggi di programmazione. I caratteri al di fuori del Piano multilingue di base (BMP), compresa la maggior parte delle emoji, occupano due unità. - I byte UTF-8 sono ciò che memorizza un file o una colonna di database. Le lettere ASCII occupano un byte, le lettere latine accentate di solito due, i caratteri coreani, cinesi e giapponesi di solito tre e le emoji quattro o più.
| Testo | Grafemi | Code point | Unità UTF-16 | Byte UTF-8 |
|---|---|---|---|---|
| a | 1 | 1 | 1 | 1 |
| é (un solo code point) | 1 | 1 | 1 | 2 |
| é (e + accento combinante) | 1 | 2 | 2 | 3 |
| 한 (sillaba coreana) | 1 | 1 | 1 | 3 |
| 👍 | 1 | 1 | 2 | 4 |
| 👍🏽 (con tonalità della pelle) | 1 | 2 | 4 | 8 |
| 👨👩👧 (emoji famiglia) | 1 | 5 | 8 | 18 |
Accenti combinanti e testo coreano
Alcuni caratteri possono essere memorizzati in più di un modo. "é" può essere un singolo code point precomposto oppure una semplice "e" seguita da un accento combinante. Hanno un aspetto identico, ma la seconda forma ha un code point e un byte in più. Il testo copiato da alcuni sistemi, come i nomi dei file su determinati sistemi operativi, può usare la forma scomposta.
Il coreano presenta lo stesso problema. Una sillaba come "한" è di solito memorizzata come un solo code point, ma può anche essere scritta come jamo separati (ㅎ, ㅏ, ㄴ) che si combinano sullo schermo. Un contatore basato sui grafemi mostra 1 in entrambi i casi, mentre un conteggio dei code point mostra 1 o 3. La normalizzazione Unicode (NFC o NFD) converte tra le due forme.
Contare le parole in lingue diverse
In inglese, dividere il testo in corrispondenza degli spazi dà un conteggio delle parole ragionevole, anche se parole con trattino, contrazioni, numeri e URL possono comunque essere contati in modo diverso da strumenti diversi.
Cinese, giapponese e thailandese si scrivono di solito senza spazi tra le parole, quindi dividere in corrispondenza degli spazi conterebbe un’intera frase come una sola parola. I contatori migliori usano un segmentatore di parole basato su dizionari e regole. Il contatore di LeedyBox usa Intl.Segmenter del browser, che individua i confini delle parole per molte lingue. In queste lingue la segmentazione è una questione di convenzione, quindi i risultati possono differire da quelli di altri strumenti o dal conteggio di una persona. Per questo motivo alcuni editori in queste lingue contano i caratteri invece delle parole.
Perché app e siti web contano in modo diverso
Un limite come "massimo 280 caratteri" o "VARCHAR(255)" può essere misurato in grafemi, code point, unità UTF-16 o byte, a seconda del sistema. Alcuni servizi inoltre contano un link come una lunghezza fissa o considerano più "pesanti" determinate scritture. Quando devi rispettare un limite, scopri quale unità usa il sistema di destinazione e fai il confronto con quel numero. Il contatore di LeedyBox mostra affiancati grafemi, unità UTF-16 e byte UTF-8 e include un controllo del limite, così puoi vedere quanto sei vicino al limite nell’unità che conta.
Righe, paragrafi e a capo
Il conteggio delle righe dipende da come sono memorizzati gli a capo. Windows usa di solito due caratteri (CR LF), mentre Linux e macOS ne usano uno (LF). Uno strumento che conta i caratteri grezzi può contare un a capo di Windows come due. Un a capo finale alla fine del testo può contare o meno come una riga vuota in più. I paragrafi vengono di solito contati come blocchi separati da una o più righe vuote, quindi un singolo a capo all’interno di un paragrafo non ne inizia uno nuovo.
Stime del tempo di lettura
Il tempo di lettura si calcola dividendo il numero di parole per una velocità di lettura presunta. La velocità reale varia in base al lettore, alla lingua e a quanto è tecnico il testo, e il numero di parole stesso dipende dalla segmentazione. Considera la stima un’indicazione approssimativa per pianificare, non una misurazione.
Domande frequenti
Perché in alcune app un’emoji conta come 2 caratteri?
Quelle app contano le unità di codice UTF-16. La maggior parte delle emoji è memorizzata come due unità, e le emoji con tonalità della pelle o con più persone combinate ne usano di più.
Quale conteggio devo usare per il limite di una colonna di database?
Consulta la documentazione del database. Alcuni limiti sono espressi in caratteri e altri in byte, quindi spesso il valore da confrontare è il conteggio dei byte UTF-8.
Il contatore invia il mio testo da qualche parte?
Il Contatore di parole e caratteri di LeedyBox funziona nel browser, quindi il testo che incolli viene contato sul tuo dispositivo.