一个 BOM 引发的字幕转换 Bug
Fixing a bug with byte order marks
最近在整理本地媒体库时,我决定将 SRT 字幕统一转换为 WebVTT 格式以便在 HTML5 视频元素中播放。起初以为转换很简单,结果却踩进了 byte order marks (BOM) 的坑。由于部分 SRT 文件开头带有 UTF-8 BOM,导致我的 Python 脚本无法正确识别并移除序号,最终将 BOM 和序号一起错误地复制到了 WebVTT 文件中。我尝试过手动处理,后来发现使用 encoding="utf-8-sig" 可以优雅地自动跳过 BOM。对于已经生成的错误文件,我利用 ripgrep 配合正则表达式定位问题,并编写脚本批量清洗了数据。这次经历让我深刻体会到,在构建静态网站管理媒体库的过程中,深入理解底层编码细节是多么重要。
这种类型的教训正是我热爱以手工构建的静态网站来管理本地媒体档案的原因——这种低技术含量的方法给了我大量探索底层概念并了解计算机实际工作原理的机会。