字幕编码转换
或者粘贴字幕文本
选项
改的是字节,不是字幕内容。文件里的每个字符都会用你选的编码写出,这样只认某一种编码的播放器或脚本就能读到它。UTF-8 是现代工具普遍期待的一种,也是本站其他地方统一使用的。带 BOM 的 UTF-8 就是同样的字节,前面多了三字节标记。UTF-16 LE 是 Windows 程序口中的 Unicode,体积大约翻倍。Windows-1252 是较早的西欧编码,每个字符一个字节,也是要小心的一种:它容纳不了中文、日文、韩文、西里尔文、希腊文或 emoji,所以每个写不出的字符都会变成问号,并在上面的报告里计数。文件的其余部分不变。
时间按哪个帧率计算。在格式页面里,这是 MicroDVD 需要的值,因为它把时间存成帧号。在帧率页面里,它是文件当初对应的速率 —— 字幕是按这个版本做的 —— 而页面的第二个框填你要拿它配套的视频速率。常见的有 23.976、24、25、29.97、30、50、59.94 和 60。填错会让整条时间轴偏移;在帧率页面里,偏移是按比例发生的,而不是一个固定的量。
字符编码是把文字变成字节的规则,也是字幕文件里唯一看不见的属性。记事本、浏览器、播出服务器和电视机都得被告知或去猜,猜得不一样,文字就变成不属于任何语言的符号。这一页按你指定的编码把文件写出来,读的那一端就不必再猜。
默认是保持文件进来的编码,多半也是你想要的:平移时间轴这类操作不该顺手改写编码,UTF-16LE 进来的文件出去还是 UTF-16LE。只有当面前有东西点名了编码——交付规范、拒收文件的工具、显示错字的播放器——或者当你在一份来源各异的文件夹里做统一时,才改这个设置。
面板上的四个选项是最常见的几种。UTF-8 是网页与多数现代工具用的,也是本站每个转换页默认写出的。带标记的 UTF-8 是同样的字节前面多三个,给看开头字节判断编码的 Windows 程序。UTF-16LE 是 Windows 字幕工具口中的 Unicode,每个字符两个字节,文件大约变成两倍大。Windows-1252 是更早的西欧编码,不少欧洲播出工具仍在写,它能装下西欧语言的附加符号,别的装不下。
最后那句就是一次有损,也是这一页在写入前先报告的原因:把日文、中文、西里尔文或希腊文字幕存成 Windows-1252,目标编码里没有字节的字符会写成问号——文件没坏,是那些字符没了。面板上方的报告会数给你看,计数来自编码器写文件时用的同一张码表,读到几就是产物里会有几个问号。这个数不是 0 就换一个目标。两栏看起来一样是正常的:编码是字节的属性,栏里装的是字符;改动发生在下载那一刻。文件不上传。
示例
一份英文文件写成 UTF-8
输入
1
00:00:01,000 --> 00:00:02,000
The room is dark.
输出
1
00:00:01,000 --> 00:00:02,000
The room is dark.
默认选项,也是本站其它页面写出的编码。输出等于输入,因为文件本来就是 UTF-8。这个例子固定的是反面:选编码不会顺手规范化别的东西,cue 不会因为你来过这一页而丢换行、多标记或改时间码。
把日文字幕写成 Windows-1252
输入
1
00:00:01,000 --> 00:00:02,000
こんにちは
输出
1
00:00:01,000 --> 00:00:02,000
こんにちは
五个假名对上一个装不下任何一个的编码,所以这次运行的有损报告计 5 个将变成问号的字符。两栏仍显示假名,因为替换发生在写入而不是读取时——你既看到文件说了什么,也看到这样写会失去什么。
常见问题
字幕文件的编码和格式有什么区别?
格式是文件怎么组织 cue 编号、时间码与文字,能读得出来;编码是这些字符怎么变成字节,看不见。同一份 SRT 可以是 UTF-8、UTF-16 或 Windows-1252,在任何编辑器里长得一样。这一页改后者,改前者的是转换页。
目标编码表示不了的字符会怎样?
写成问号,并在下载前告诉你有几个。Windows-1252 覆盖西欧字母,对日文、中文、韩文、西里尔文、希腊文和 emoji 一个字节也没有,这些字符不可能以任何形式留下来——既不会报错,也没有保持含义的替代写法。
为什么选了新编码,上下两栏还是一模一样?
因为栏里装的是字符,选择的是字节。文字还是那些文字,一个字符占一、二还是三个字节,要到写入文件(下载)时才决定。队列里每一行会写明按什么编码读入,两者不同时再补一个写出编码的标签。
交付字幕时该选哪个编码?
规范没写就选 UTF-8,而规范通常会写。Windows-1252 在欧洲播出交付里常见,只对西欧文字安全;UTF-16LE 可能是纯 Windows 制作工具要求的。文件本来编码就合适时,保持默认是最稳的答案。
选 UTF-16LE 会让文件变成两倍大吗?
差不多。每个字符两个字节,20 KB 的英文字幕变成约 40 KB,再加前面两个字节的标记;之后做一次压缩能去掉大部分差额。换来的是 Windows 旧软件喜欢的性质:每个字符同宽。
列表里为什么没有 UTF-16 大端?
因为没人主动选它,而已是它编码的文件照样处理——默认设置下按原样写成 UTF-16 大端。列表只放实际会有人要的四个目标;底层写出器支持大端,是为了“保持原编码”时不会悄悄改掉文件。