How to fix a subtitle file that shows up as garbled characters
Tell Vizard Agent which encoding the file has to be in: Windows-1250 for Central European, Windows-1251 for Cyrillic, UTF-8 with a BOM for most modern players. It writes the SRT in that encoding, finds any character the encoding cannot represent and spells it out instead, then validates the timecodes before delivery.
What do you type into Vizard Agent?
Name the code page. "Fix the encoding" isn't actionable, because there's no universally correct answer: the right encoding is whatever the thing on the other end was built to read. Vizard Agent can write any of them, but it can't see the player, so that's the one thing you have to supply.
Prompt
What does Vizard Agent actually do?
A subtitle file is just text, and it's only readable if the reader guesses the encoding the writer used. The conversion is the easy part. A legacy code page holds a few hundred characters, so a single curly quote, dash or currency symbol from the translation can break the export or turn into a question mark. In the session behind this article it:
- Built a timed transcript of the speech for a Russian and Czech pair of files that had to open on a legacy player, and assembled the SRT from the word-level timings.
- Found and fixed overlapping cues, sanitised zero-length cues and re-validated the file.
- Converted each file to the code page named for it, then scanned for characters outside that code page.
- Replaced the incompatible character by spelling out its meaning in words the code page could hold, and fixed the same problem in the translated file.
- Validated encoding, cue count, timecodes and sample lines, and delivered each language as its own correctly encoded file.
When does this not work well?
Some text can't survive a legacy code page. A Czech file in CP1250 has no room for Cyrillic, and a line that mixes scripts has to lose one of them, so Vizard Agent will tell you rather than quietly picking. Emoji and unusual symbols have no legacy equivalent, and with an unknown player the encoding is a guess.
Common questions
What happens to a character that does not fit? Vizard Agent spells it out in words rather than dropping it.
Why not just use UTF-8? Modern players accept it. Older equipment often does not, which is why the code pages persist.
Can it fix a subtitle file I already have? Yes. Send the file and tell Vizard Agent the encoding you need.