Vai al contenuto
Allin

Dai sottotitoli al foglio di calcolo, e ritorno: che cosa sopravvive al viaggio

Pubblicato il 05/08/2026 · 12 min di lettura · Strumenti per sviluppatori

Daniel Okonkwo

Daniel OkonkwoSviluppatore front-end e redattore Tech presso Allin

Performance web · Formati di file

Verificato su 3 fonti

Vedi il profilo
In breve

Entrambe le metà del viaggio sono conformi e un sottotitolo torna esattamente come è partito. All'andata ogni sottotitolo diventa una riga di indice, inizio, fine e testo; ogni campo che contenga una virgola, una virgoletta dritta o un a capo viene racchiuso tra virgolette doppie e le virgolette interne vengono raddoppiate, che è quanto descrive la RFC 4180. Anche le marche temporali sono protette in automatico, perché SubRip scrive i millesimi dopo una virgola: 00:00:01,000 contiene un separatore. Al ritorno il convertitore da CSV a SRT legge il file come record CSV e non come righe di testo, quindi un a capo chiude un record solo quando cade fuori dalle virgolette: un sottotitolo su due righe e uno su tre tornano interi. Provato sull'output dello stesso esportatore, un file che mescola sottotitoli di una, due e tre righe, con virgole e virgolette, si ricostruisce identico byte per byte e lo resta dopo tre viaggi consecutivi. L'importazione accetta inoltre i file separati da punto e virgola, ricostruisce nell'ordine della colonna indice quando ogni riga porta un numero distinto, e segnala un sottotitolo che finisce prima di iniziare o una riga illeggibile. Ciò che richiede ancora attenzione non sono i due convertitori ma il foglio di calcolo in mezzo, che può ritipizzare una colonna di tempi appena apri il file.

Una virgola viene protetta, una virgoletta raddoppiata e un sottotitolo su due righe conserva entrambe — verificato byte per byte su tre viaggi consecutivi. Ciò che può ancora alterare il file è il foglio di calcolo in mezzo.

Perché un foglio di calcolo è la forma giusta per la revisione

Un file di sottotitoli è un cattivo oggetto da consegnare a chi non fa il sottotitolatore. Intreccia contenuto e meccanica, così un revisore deve scavalcare numeri e marche temporali per leggere una frase, e qualunque modifica accidentale a una marca resta invisibile fino alla riproduzione. Una riga per sottotitolo risolve entrambi i problemi in una volta. Il testo sta in una sola colonna, leggibile dall'alto in basso; i tempi stanno nelle loro colonne, visibili ma difficili da toccare; e si può aggiungere una seconda colonna per una traduzione, un commento o un segno di approvazione senza disturbare nulla.

Le colonne che questo convertitore scrive sono indice, inizio, fine e testo, in quest'ordine, con una riga di intestazione con esattamente quei quattro nomi. L'indice è rigenerato dalla posizione di ogni sottotitolo nel file invece che copiato dalla numerazione di origine, quindi un file con contatori duplicati o fuori sequenza esce numerato pulitamente da uno. Conserva quella colonna. Al ritorno viene letta e non ignorata: quando ogni riga porta un numero distinto, l'importazione ricostruisce nell'ordine dell'indice, così un foglio che hai ordinato per testo mentre lavoravi produce comunque un file di sottotitoli nell'ordine giusto.

Virgole, virgolette e l'RFC che le copre

Il dialogo è pieno di virgole, e la virgola è il separatore di campo: è la prima cosa da controllare in qualunque strumento da sottotitoli a CSV. L'RFC 4180, il memo del 2005 che mise per iscritto l'aspetto abituale dei file CSV, dà la regola: i campi che contengono a capo, virgolette dritte o virgole vanno racchiusi fra virgolette, e una virgoletta dentro un campo simile si protegge facendola precedere da un'altra virgoletta. Questo convertitore rispetta entrambe le metà. «Beh, no, non esattamente.» si scrive come un solo campo fra virgolette, e Ha detto "il porto", non i moli. si scrive "Ha detto ""il porto"", non i moli." — protetto perché contiene sia una virgoletta sia una virgola, con ogni virgoletta interna raddoppiata.

Le marche temporali ricevono lo stesso trattamento senza che nessuno lo decida, e la ragione è un felice incidente del formato. SubRip scrive i millisecondi dopo una virgola, quindi 00:00:01,000 contiene un separatore di campo ed è protetta in ogni riga di ogni file che questo strumento produce. Vale la pena notarlo, perché è l'unico punto in cui la strana scelta di separatore di SubRip ti fa un favore: una marca WebVTT, che usa un punto, uscirebbe senza virgolette e sarebbe in balia di ciò che il programma lettore decide che sia un 00:00:01.000 non protetto.

Due deviazioni oneste, nessuna dannosa ma entrambe reali. L'RFC 4180 dice che i record sono delimitati da ritorno a capo e avanzamento di riga; questo convertitore scrive un solo avanzamento di riga, che ogni foglio di calcolo accetta e che conta solo se qualcosa a valle è molto letterale. E l'RFC ha stato Informational, non è uno standard: descrive che cosa fanno le implementazioni invece di imporlo, e la sua stessa formulazione dice «dovrebbero» e non «devono». Trattarlo come la definizione del CSV è una convenzione utile, non una garanzia sul prossimo programma che leggerà il tuo file.

Quattro cose da sapere sul foglio di calcolo in mezzo

Il delimitatore. I fogli di calcolo delle lingue che usano la virgola come separatore decimale — cioè francese, tedesco, spagnolo, italiano e portoghese — salvano spesso il file con punti e virgola tra i campi invece che con virgole, seguendo il separatore di elenco del sistema. L'importazione guarda il primo record e conta i separatori che cadono fuori dalle virgolette, quindi un file così viene letto e non rifiutato; un punto e virgola dentro un sottotitolo non viene contato, perché sta dentro un campo protetto. Scegliere esplicitamente la variante separata da virgole, quando il foglio la propone, dà ancora un file più pulito, ma un salvataggio normale in una di quelle cinque lingue non ti costa più l'importazione.

I tipi. Il CSV non porta alcuna informazione di tipo — l'RFC 4180 non dice nulla sui tipi di dato, perché non c'è nulla da dire: ogni campo è testo. Le virgolette proteggono l'analisi, non il significato. Un foglio di calcolo legge il campo protetto, lo scarta dalle virgolette e poi decide da sé che cosa contenga, ed è lì che la marca temporale rischia: 00:00:01,000 è una stringa che un programma ha diritto di leggere come ora, come numero con separatore delle migliaia o come testo, secondo la sua impostazione locale e le sue congetture. Nulla nel file glielo indica. L'abitudine affidabile è importare invece di aprire — usare il percorso di importazione testo del foglio e impostare le due colonne dei tempi su Testo prima che i dati arrivino — e controllare una marca prima di cominciare a modificare.

Le formule. Un sottotitolo il cui testo inizia con un segno di uguale, un più o una chiocciola — e con un meno seguito da una cifra o da un altro operatore, come -1-1 — viene scritto come campo protetto preceduto da un apostrofo, l'escape che il foglio di calcolo già capisce: la cella mostra il testo e non valuta nulla. L'importazione toglie di nuovo quell'apostrofo, così =SUM(A1:A9) fa il viaggio tale e quale. Il trattino di dialogo è lasciato in pace di proposito, perché una riga che inizia con «- Sì.» è una battuta in un file di sottotitoli su due e non è una formula in nessun foglio. Ciò da cui non ti protegge è una formula che digiti tu stesso mentre modifichi.

L'ordine. Ordinare è il gesto più naturale in un foglio di calcolo, perciò l'importazione legge la colonna indice invece di ignorarla: quando ogni riga porta il proprio numero distinto, l'uscita viene ricostruita nell'ordine dell'indice e un avviso ti dice che le righe sono state rimesse in sequenza. Ordina per testo per raggruppare battute simili durante una verifica terminologica e l'SRT ricostruito esce comunque in ordine cronologico. Se i numeri sono duplicati, o mancano su alcune righe, la colonna non è affidabile: allora si conserva l'ordine delle righe e lo strumento lo dice. I tempi invertiti sono segnalati allo stesso modo: una riga che va da 00:00:09,000 a 00:00:04,000 continua a essere scritta così com'è, ma ora viene contata e nominata invece di passare in silenzio.

Il contenuto di un sottotitolo nel viaggio: esportato in CSV, modificato in un foglio, ricostruito come SRT
Che cosa contiene il sottotitoloCome viene scritto il CSVChe cosa tornaVerdetto
Una virgolaCampo fra virgolette doppieIdenticoSopravvive
Una virgoletta drittaCampo protetto, ogni virgoletta interna raddoppiataIdentico, anche dopo più viaggiSopravvive
Un a capo (sottotitolo su due righe)Campo protetto, a capo reale dentro — correttoEntrambe le righe, nello stesso sottotitoloSopravvive — identico byte per byte, tre viaggi
Una marca temporale, 00:00:01,000Sempre protetta — contiene una virgolaIdentica, se il foglio non l'ha ritipizzataSopravvive al file; il rischio è il foglio
Un testo che inizia con = + - o @Protetto, con un apostrofo davanti — l'escape del foglioLa cella mostra il testo; l'importazione toglie l'apostrofoSopravvive — il trattino di dialogo resta intatto
Righe riordinate nel foglioNulla segna l'ordine originale tranne la colonna di indiceLa colonna di indice viene letta; l'uscita segue il suo ordineSopravvive — conserva la colonna indice e leggi l'avviso
Convertitore da SRT a CSVConverti un file di sottotitoli SRT in un CSV pronto per foglio di calcolo, con colonne per indice, inizio, fine e testo. I campi con virgole o a capo sono correttamente racchiusi tra virgolette secondo lo standard CSV, così si apre pulito in Excel, Sheets o Numbers. Copia o scarica il file.Prova lo strumento

Domande frequenti

Una virgola dentro un sottotitolo rompe il CSV?
No. Ogni campo che contenga una virgola, una virgoletta dritta o un a capo viene racchiuso fra virgolette, e una virgoletta dentro un campo simile si protegge raddoppiandola, che è ciò che descrive l'RFC 4180. Provato su casi reali: «Beh, no, non esattamente.» diventa un solo campo protetto, e Ha detto "il porto", non i moli. diventa "Ha detto ""il porto"", non i moli." — protetto perché contiene sia virgola sia virgoletta, con ogni virgoletta interna raddoppiata. Entrambi tornano identici byte per byte attraverso il convertitore da CSV a SRT, e sopravvivono a tre viaggi consecutivi senza accumulare virgolette, che è il tipico fallimento di una protezione ingenua. Le marche temporali sono protette dalla stessa regola senza che nessuno l'abbia scelto, perché SubRip scrive i millisecondi dopo una virgola e 00:00:01,000 contiene quindi un separatore.
I sottotitoli su due o tre righe sopravvivono al viaggio?
Sì, e il motivo vale la pena di conoscerlo, perché è lì che questo tipo di strumento di solito fallisce. Un sottotitolo con un a capo viene scritto come campo protetto con un a capo reale dentro, a cavallo di due righe fisiche del file CSV: la forma corretta secondo la RFC 4180 e quella che un foglio di calcolo apre come una cella sola. Il convertitore da CSV a SRT legge il file come record CSV e non come righe di testo, quindi un a capo chiude un record solo quando cade fuori dalle virgolette; un record steso su tre righe fisiche resta un record. Verificato sull'output dello stesso esportatore: un file che mescola sottotitoli di una, due e tre righe, uno con una virgola e uno con una virgoletta, si ricostruisce identico byte per byte e lo resta dopo tre viaggi consecutivi. Se modifichi il testo in un foglio di calcolo, usa il suo a capo dentro la cella — Alt+Invio in Excel su Windows — invece di digitare una barra rovesciata e una n, che sono solo due caratteri di testo.
Il mio foglio di calcolo salva il file con punti e virgola. Verrà importato?
Sì. I fogli di calcolo seguono il separatore di elenco del sistema e, nelle lingue che usano la virgola come segno decimale — francese, tedesco, spagnolo, italiano, portoghese —, quel separatore è il punto e virgola, quindi un salvataggio normale produce un file delimitato da punti e virgola. L'importazione guarda il primo record di ciò che incolli, conta le virgole e i punti e virgola che cadono fuori dai campi protetti e sceglie il più frequente; un punto e virgola dentro una battuta non viene contato, perché sta tra virgolette. Vale a dire che un file salvato da un foglio francese, tedesco, spagnolo, italiano o portoghese si importa così com'è. Scegliere esplicitamente la variante separata da virgole — di solito offerta con un nome come CSV UTF-8 o «delimitato da virgole» — resta l'abitudine più pulita se devi passare il file ad altro, ma non è più una condizione perché funzioni qui.
Excel distruggerà le mie marche temporali leggendo 00:00:01,000 come ora o come numero?
Può, e le virgolette non lo impediscono, perché proteggere e tipizzare sono due problemi diversi. L'RFC 4180 non dice assolutamente nulla sui tipi di dato: un campo CSV è testo, e il formato non ha modo di dire altrimenti. Le virgolette dicono al lettore dove il campo comincia e finisce; una volta scartato, che cosa il lettore decida che il contenuto significhi dipende solo da lui, e la congettura di un foglio dipende dalla sua impostazione locale quanto dalla stringa. Non contare sulla fortuna: usa il percorso di importazione testo del foglio invece di fare doppio clic sul file, e imposta le colonne di inizio e fine su Testo prima che i dati arrivino. Controlla poi una marca nel foglio, prima di modificare qualsiasi cosa, e verifica che dica ancora 00:00:01,000 e non un valore allineato a destra di altra forma. Se è stata convertita, chiudi senza salvare e importa di nuovo: riparare una colonna di tempi rovinati costa molto più che importarla bene la prima volta.
Posso aggiungere, cancellare o riordinare righe nel foglio di calcolo?
Aggiungi ed elimina liberamente; riordina pure liberamente, purché conservi la colonna indice. L'importazione legge quella colonna: quando ogni riga porta il proprio intero distinto, l'uscita viene ricostruita nell'ordine dell'indice e un avviso segnala che le righe sono state rimesse in sequenza, così un foglio ordinato alfabeticamente per testo per raggruppare battute simili produce comunque un file di sottotitoli in ordine cronologico. Se alcune righe hanno perso il numero, o due righe condividono lo stesso, la colonna non è affidabile: lo strumento conserva allora l'ordine in cui le righe compaiono e lo dice invece di indovinare. Eliminare una riga è sicuro: l'uscita viene rinumerata da uno, qualunque siano gli indici rimasti. L'importazione segnala ora anche un sottotitolo la cui fine precede l'inizio: una riga che va da 00:00:09,000 a 00:00:04,000 continua a essere scritta così com'è, ma viene contata e nominata invece di passare in silenzio. I tempi possono essere inseriti anche in secondi anziché in timecode, comodo quando aggiungi un sottotitolo a mano: 5.5 e 8.2 sono letti come 00:00:05,500 e 00:00:08,200.

Articoli che potrebbero interessarti

Tutte le guide
TutorialSottotitoli fuori sincrono: misurare lo scarto e spostare un SRT di un numero esatto di secondiMisura lo scarto in due punti invece di indovinarlo una volta sola. Se è costante, un solo spostamento sistema il file. Se cresce, è un problema di frame rate — 25 fps contro 23,976 deriva di 2,5625 secondi al minuto — e nessuno spostamento lo risolverà.TutorialUnire due tracce di sottotitoli in una versione bilingue: che cosa succede davvero ai sottotitoliIl sottotitolo 12 della traccia inglese non è il sottotitolo 12 di quella francese, perché i traduttori spezzano e uniscono le frasi in modo diverso. Esistono due strategie per accoppiarli; questo strumento non ne usa nessuna: intercala. Ecco che cosa ne esce e quando basta.TutorialDa SRT a testo: ottenere una trascrizione pulita dai sottotitoliTogliere i numeri e le marche temporali è la metà facile. A decidere se la trascrizione si legge sono le etichette di corsivo, i trattini di dialogo, le descrizioni sonore e le frasi spezzate su due sottotitoli — e questo convertitore te le lascia tutte.SpiegazioneNormalizzazione di picco contro normalizzazione di sonorità, e l'obiettivo irraggiungibileAmplificare finché il campione più forte tocca un tetto non cambia quasi nulla di quanto forte suoni una cosa. Misurare in LUFS sì. Questo strumento misura — in due passaggi, correttamente — e poi mostra un risultato che non ha mai verificato, e che su materiale ordinario può scostarsi ben più di un decibel.TutorialTogliere il suono da un video senza toccare l'immagineUn solo comando ffmpeg, nessun codificatore, e un risultato il cui flusso video è byte per byte quello di partenza — verificato per checksum. Più il motivo per cui il file quasi non si rimpicciolisce, e la differenza fra una traccia silenziosa e nessuna traccia.GuidaEstrarre fotogrammi fissi da un video — e perché sembrano più molli del videoDietro tre pulsanti si nascondono tre comandi: un fotogramma a un istante dato, un numero fisso distribuito sul clip, o uno ogni N secondi. Ecco gli argomenti esatti, il tetto di 60 fotogrammi e il motivo per cui un fotogramma preso da metà di un clip compresso non sarà mai nitido quanto un fotogramma chiave.

Strumenti correlati

SubRip non ha una specifica. La Library of Congress lo registra come solo in parte documentato e mal normalizzato, quindi che cosa sia un file .srt valido lo decide il lettore, il codificatore o la piattaforma che lo legge, e prima o poi due di essi non saranno d'accordo. Tutto ciò che è descritto qui è stato verificato sull'output reale dello strumento e non su una norma, perché per questo formato non ne esiste alcuna. WebVTT è diverso — ha una specifica pubblicata dal W3C — ma resta un Candidate Recommendation Draft e non una raccomandazione conclusa. Conserva il file originale, prova quello convertito nel lettore o nel servizio di caricamento che intendi davvero usare prima di buttare qualcosa, e considera ogni affermazione su ciò che fanno «tutti i lettori», comprese quelle di questa pagina, come qualcosa da verificare sul tuo.

Fonti

Hai notato un errore in questo articolo?