Het bestand is niet kapot, het lezen is verkeerd
In een ondertitelbestand staan bytes. Om bytes tot tekst te maken moet je weten met welke codering ze geschreven zijn — kies je daarin verkeerd, dan komt er onleesbare tekst uit. Het bestand zelf is geen byte kwijt; lees je het met een andere codering opnieuw, dan zijn de tekens terug.
Onleesbare tekst is dus twee dingen: herkennen met welke codering het oorspronkelijk is geschreven en opslaan in een codering die de speler herkent. Het eerste gebeurt door te proeflezen en te scoren, het tweede door op te slaan als. Het zijn twee verschillende problemen.
Vijf verschijningsvormen, vijf oorzaken
Onleesbare tekst ontstaat niet willekeurig; hoe hij eruitziet verraadt direct de oorzaak:
- Reeksen letters met accenten (`ä½ å¥½`): tekst in UTF-8 is als een codering van één byte per keer gelezen — in UTF-8 is een teken drie bytes, bij één byte per keer wordt elke byte een eigen letter
- Aaneengesloten tekens maar geen enkel alledaags teken: UTF-8 is als GBK gelezen — telkens twee bytes worden opnieuw gekoppeld en er komen alleen zeldzame tekens uit
- Een hoop valuta- en wiskundige symbolen: de bytes zijn in het symboolgebied terechtgekomen, vaak gelezen als Mac Roman of de Latin-1-familie
- Besturingstekens ertussen: de bytes zijn in het onzichtbare besturingsgebied terechtgekomen, op het scherm leegte of een blokje
- Het vierkante vraagteken `�`: dit is een vervangingsteken, geen onleesbare tekst — het betekent dat hier een teken stond dat bij het lezen al kwijtgeraakt is

Waarom een vervangingsteken niet te repareren is
Het vervangingsteken is de belangrijke scheidslijn. Staat er `�`, dan zijn de bytes al in een eerdere stap weggegooid (meestal heeft een programma het bestand één keer gelezen en één keer opgeslagen); van het weggegooide deel is geen enkel spoor. Terugredeneren heeft dan geen grond — niemand kan het repareren.
Daarom behandelt de reparatiepagina twee gevallen apart: bij uploaden zijn de oorspronkelijke bytes er nog en kan elke codering om beurten worden geprobeerd; staat in geplakte tekst al een vervangingsteken, dan wordt ronduit gezegd dat het niet te repareren is en het oorspronkelijke bestand geüpload moet worden.
Er is ook een omgekeerd geval: de inhoud leest volledig normaal, maar in de speler is het nog steeds onleesbaar. Dat is niet de fout van het bestand maar van de speler die de verkeerde codering koos. Het bestand wijzigen helpt niet; geef de speler een kopie die als UTF-8 met BOM of GBK is opgeslagen.

Wat er bij repareren wordt vergeleken
Het gereedschap probeert elke mogelijke codering om beurten en geeft elk resultaat een score: hoeveel alledaagse tekens, zijn er reeksen accenten, zijn er reeksen symbolen, zijn de tekens aaneengesloten zeldzaam. Wat het hoogst scoort staat bovenaan.
Is de score niet duidelijk beter, dan wordt niets aanbevolen — liever zeggen dat dit bestand normaal leest dan je afschepen met een halfslachtig resultaat. Bij bestanden die twee keer verkeerd zijn behandeld, wordt bij de eerste paar kandidaten nog een laag teruggedacht.

In de juiste codering opslaan maakt het af
De gerepareerde tekst moet ook in een codering worden opgeslagen die de speler herkent. Spelers onder Windows herkennen de codering vaak aan de BOM, dus UTF-8 met BOM opslaan is het makkelijkst; oudere apparaten of lokale spelers herkennen GBK. Kiesbare coderingen: UTF-8, UTF-8 (met BOM), GBK, Big5, Shift_JIS, EUC-KR; past het niet, dan wordt gevraagd een andere te kiezen (GBK kan bijvoorbeeld geen Koreaans bevatten).

Gerelateerde gereedschappen en gidsen
De volledige werkwijze zie Reparatie van onleesbare ondertitels gebruiken; wat er precies in een SRT-bestand staat zie Wat staat er in een SRT-bestand; is de codering goed maar de inhoud rommelig (watermerk, reclame, aanduidingen voor slechthorenden) gebruik Ondertitels opschonen.