使用说明与检查边界
这份工具帮助你在字幕交付前定位基本 SRT 格式问题。它不修改字幕,不代替看原片、听声音与核对文字。
三步使用
- 保留原文件,确认副本以 UTF-8 编码保存(可带 BOM)。编码不明时先在文本编辑器中核对;改扩展名不会转码。
- 打开同目录下的
srt-checker.html,选择文件并点击“检查文件”。文件最大 2 MiB(2,097,152 字节),最多 20,000 个字幕段。 - 按段号与原文件行号复查。需要留档时下载 JSON 报告;修改副本后重新检查,再放到目标播放器对照原片。
哪些结果需要处理
| 类别 | 工具会报告 | 你要做什么 |
|---|---|---|
| 错误 | 编码不支持、序号无效或重复、缺时间箭头、非法时间语法、结束不晚于开始、缺字幕文本、疑似缺段落空行。 | 回到原文件定位和修订;格式错误不代表可以自动删掉该字幕。 |
| 提醒 | 序号不连续、时间重叠、时间顺序倒退,以及已有替换字符。 | 对照原片和导出方式确认。有意重叠或特殊编号可能需要保留。 |
| 未检查 | 文字事实、翻译和专名、音画同步、说话人、版权、目标软件兼容性、特定平台阅读速度和样式规则。 | 由文字或内容责任人逐项核对,并在实际交付环境播放。 |
本工具采用的基本格式
正整数序号 HH:MM:SS,mmm --> HH:MM:SS,mmm 一行或多行字幕文本 下一个字幕段…
- 小时两位(00–99),分、秒各为 00–59,毫秒三位。接受 LF、CRLF 或 CR 换行;只在分析副本中统一换行,不改原文件。
- 序号从 1 开始连续递增是检查提醒,不连续不会自动判成格式错误;重复序号单独报错。序号必须为可精确表示的正整数。
- 时间相等的首尾相接不算重叠。重叠报告为每个受影响段定位一个相交段,不穷举所有相交组合。
- 时间行后的定位参数、序号与时间写在同一行等扩展格式不在本工具范围内。工具报“时间语法”不代表所有播放器都会拒绝该扩展。
- 字幕中的 HTML 样式标签只当作文字显示,不执行。工具不检查样式能否在目标播放器呈现;标签本身也可能被视为非空文本,需要人工确认是否有可见字幕。
- 2 MiB 或 20,000 段上限超出时,不完成格式扫描。页面每类最多显示 100 条问题,JSON 每类最多存 1,000 条明细,保留真实总计数和截断标记。
编码与隐私
工具使用严格 UTF-8 解码,遇到非法字节直接停止,不使用替换字符掩盖解码错误。UTF-16/UTF-32 标记或 NUL 字节会触发复核提示;不猜测 GBK 等其他编码。无 BOM 文件即使字节可以按 UTF-8 解码,也不能证明它最初使用什么编码或文字一定正确,已发生的乱码仍需对照原文。
没有外部库、统计、上传接口、网络请求或浏览器存储。文件名与字幕正文只用于当前页面显示;原字幕始终作为文本显示,绝不作为 HTML 执行。报告不包含原文件名或字幕正文,但含段号、行号、数值时间和诊断信息。点击“清空”清理页面状态;关闭标签页结束本次使用。浏览器或操作系统的文件下载记录由你自行管理。
开发与复测接口
检查器的唯一核心位于 <script id="srt-core">。独立测试应提取这段代码到 Node VM,直接调用同一实现,避免测试代码另写一份解析器:
const core = html.match(/<script id="srt-core">([\s\S]*?)<\/script>/)[1];
const context = vm.createContext({ TextDecoder, TextEncoder });
vm.runInContext(core, context);
const report = context.SRTChecker.checkBytes(new Uint8Array(bytes));
checkBytes(Uint8Array | ArrayBuffer) 检查原始字节;checkText(string) 用于已经解码的测试文本,不能验证原文件编码;decodeUtf8(bytes) 和 parseTimeLine(line) 也通过同一 API 暴露。核心返回确定性的报告,不读取日期、文件系统或网络。
报告字段:complete 表示是否完成范围内扫描;formatPass 仅表示未发现覆盖范围内的格式错误。errors / warnings 中每条含 code, block, line, relatedBlock, message;cues 仅存定位与数值时间,不存文字。完整边界在 unchecked;不能将 formatPass=true 写成“字幕全部通过”。
规则依据与版本
2026-10-14 核对:美国国会图书馆的 SubRip 格式描述用于序号、时间、正文和空行结构;该描述标注为 Preliminary,本文不把其行长度叙述当作所有平台限制。严格 UTF-8 是本工具自身支持范围,不是断言全部 SRT 文件必须如此。
结构参考:https://www.loc.gov/preservation/digital/formats/fdd/fdd000569.shtml
严格解码 API:https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/decode
工具版本 1.0.0 · 适用于已有字幕文件交付前的格式复查 · 不承诺收录、流量、字幕质量或版权结果。