编码错配:UTF-8 的文件被当成旧编码读
最常见的场景是字幕以 UTF-8 保存,播放器却按本地的 GBK 或 Latin-1 解码。中文字符由多个字节组成,解码方用错了表,就会把同一串字节拼成完全不相干的字,屏幕上于是出现成片的乱码字符。反过来,旧编码文件被当作 UTF-8 读取,也会散出替换符或方块。
字幕乱码排查图鉴VIDEO SUBTITLE ENCODING CATALOG
为什么视频字幕会乱码,答案通常不在画面里,而躲在两个看不见的地方:字幕文件用哪套字符编码保存,播放器又用哪套编码去读它。两套规则一旦不一致,屏幕上就会出现问号、方块或成串的怪异字母。下面这份目录把常见成因拆成一格一格的“展签”,配上乱码长相速查与逐步修复流程,方便你对照自己的文件逐项排除。
最常见的场景是字幕以 UTF-8 保存,播放器却按本地的 GBK 或 Latin-1 解码。中文字符由多个字节组成,解码方用错了表,就会把同一串字节拼成完全不相干的字,屏幕上于是出现成片的乱码字符。反过来,旧编码文件被当作 UTF-8 读取,也会散出替换符或方块。
有些编辑器给 UTF-8 文件加了字节顺序标记。这个标记本身无害,但部分播放器或字幕渲染组件不会跳过它,结果第一个字幕条目的时间轴或首行文字被顶坏,看起来就像开头几条字幕集体错乱。
编码正确、文件也读得通,但字幕仍显示方框,这往往是字体缺字。某些字幕样式指定了并不存在于当前系统的字体,或字体本身不含对应汉字,渲染时就以空心方块或占位符号顶替。换一门覆盖更全的字体通常立刻见效。
把字幕封装进容器、重新压制视频,或用工具批量转换格式时,如果转码链条上没有声明编码,工具可能按猜测的默认值重写文件。原本正常的字幕经过一进一出,反而被写成了另一种编码,问题就这样被“制造”出来。
不同播放器的默认字幕编码各异,有的跟随系统区域设置,有的固定使用通用编码。同一份字幕在这个播放器里正常,换到另一个同款软件的另一台机器上就乱掉,多数属于这类默认值差异。
先记住屏幕上的样子,再回头找对应的处理办法,往往比盲目试编码快得多。
提示:同一份文件在不同设备上表现不同,说明问题在读取端;多台设备都一样,则更可能是文件本身被写成了不合适的编码。