微博 微信

Hao4K影音

[技术教程] 19C-整改字幕流程k_UTF-8字幕移除BOM

2021-7-24 03:55:32 4861 0 |只看大图 回帖奖励 |倒序浏览 |阅读模式

Yuran 帖主

2021-7-24 03:55:32

19C,其中的19, 是连载篇的序号。后缀C,意指 三板斧的第三斧(与 ass外挂字幕的、DIY 实验有关)。
本人原创实验心得,非专业,非权威。谨供参考。全部归纳/整理到:论坛淘帖专栏中,链接在此



  这是我的自习日记。

  前篇讲到:
  
Yuran发现, 如此强劲的、字幕批量转换CLI程序,竟然就在PC硬盘上(已安装的GUI程序,同时支持CLI)。

难得、幸运



上次的实验,原先(日文)srt 样本,是ANSI的,(多语种)兼容性不太好。
若想不出乱码。就得切换 Codepage ,由936 改到932 。

经由 Subtitle Edit转换/生成的、ass字幕文件,就能做到:所见即所得(绝无乱码的困扰)。
原因在于:Subtitle Edit设计者,将CLI转换后的字幕,统一变成: Unicode 的编码。

(当然,若想改变编码,Subtitle Edit 也有相关的选项,可以人为设置。 比如:
  
  •   /encoding:windows-1252
  •   /encoding:utf-8

就能强制输出,你指定的编码格式了。具体的编码选项,可以参考这个链接:
https://docs.microsoft.com/en-us/dotnet/api/system.text.encodinginfo.getencoding?redirectedfrom=MSDN&view=net-5.0#System_Text_EncodingInfo_GetEncoding



下面的陈述,源自设计者的文档。

捕369获.jpg

Yuran(捡重点、非直译)解释一下: ANSI字幕,太旧了。
还得兼顾到:字符编码的切换问题,给用户带来不便。
现如今, Unicode字幕( UTF-8的格式),最为流行。用户无需改变环境/参数,就能直接套用...



前篇所讲的、那次“演习”,居然还有额外的惊喜。自动完成了,下述流程:

  • srt字幕,到 ass 字幕、制式的转变。
  • ansi ,到 utf-8 、编码规格的改良!

也就是说:Subtitle Edit 这款利器,不仅完美支持 CLI 模式的、srt->ass 的转制。
而且,还自动承担了: ANSI -> UTF-8 的、转码的任务。可谓双剑合璧,一举两得!



那就来个:“大兵团(集群)作战”吧: 批量处理、所有的ANSI(多语种)字幕/样本!



Subtitle Edit 的、CLI (命令行界面,command-line interface)的优势,得以发挥,速战速决!

捕123获.jpg

将5个多语种srt字幕、以及1个韩语的smi字幕,(批量)自动转换,生成了:6个ass字幕文件!
下面是,动画演示(GIF):

580m.gif



但用自编程序复查时,才知道:
Subtitle Edit 自动生成的、这6个ass字幕,其编码规格,全都是:带BOM的UTF-8 。

捕555获.jpg

目前,为了向下兼容、也为了跨平台使用。 我这里,字幕的规格,都应是:普通 UTF-8 (不带BOM)。
那就得留一手,将每个新生成的、UTF-8的字幕,分别去掉BOM!
再存档备份(一个字幕也没多大,百KB的级别)。



  用何手段,在Win10 平台下实现?

Windows 内置的 PowerShell ,也能去掉 BOM (头三个字节的、16进制代码:EF BB BF)。
第三方工具,比如VIM、tail、dos2unix 等。

我呢,想(顺便)熟悉一下、Unix、Linux的实用工具(也不难,都移植到:Windows 平台上来了)。
这次所用的、就是Unix/Lnux最流行的程序 Sed  !现如今。还衍生出: Windows 平台下的CLI版。

实用程序sed,以及脚本范例,都在本篇的附件中,解压密码:  Yuran



  • 最初的样本,是韩文的smi字幕(949_Halloween.smi);
  • 经Subtitle Edit 转换,自动生成的、是 949_Halloween.ass (带BOM的UTF-8);
  • 再用 Sed 程序,将949_Halloween.ass的BOM去掉,改存为 949_Halloween-removed_BOM.ass;
  • 用Ultraedit ,将949_Halloween.ass的BOM去掉,改存为 949_Halloween-Ultraedit-removed_BOM.ass;

捕332获.jpg

捕44获.jpg
只需比较,

  • 自编程序脚本,用sed去掉BOM后,所生成的UTF-8 文件(949_Halloween-removed_BOM.ass),
  • 与Ultraedit、人工去除BOM后的、UTF-8文件(949_Halloween-Ultraedit-removed_BOM.ass),

是否相同。就能验证: 自编程序的完美性了。
用 Total Commander ,来比较。 得到的结果:两个文件,完全相同。

捕99获.jpg

这是16进制代码的对比图,看不出异样。

捕88获.jpg

这说明: Yuran 自编的程序,调用 sed 小工具,去除BOM的结果,等同于 UltraEdit 所做的工作!
测试通过!



再附张对比图,

  • 再用 Sed 程序,将949_Halloween.ass的BOM去掉,改存 949_Halloween-removed_BOM.ass;
  • 经Subtitle Edit 转换,自动生成的、949_Halloween.ass (带BOM的ass字幕);

捕77获.jpg

    差别,就在最开始的三个字节( ef bb bf ),合情合理。



总结, DIY编程软件的、工作流程(又有删改):

  • 自动甄别 ANSI 字幕 或 Unicode 字幕;
  • 对ANSI字幕(ass除外),经由 Subtitle Edit 批量转换、生成ass字幕(附带转码: 带BOM的UTF-8 );
  • 调用sed工具,批量处理、将上述UTF-8字幕,分别去除 BOM (header)。
  • 对于原生ass的UTF-8 字幕,自动甄别: 是否带 BOM(若带BOM, 则自动去除)。

摆在Yuran面的,应该都是:ass字幕,而且,杜绝 ANSI格式。统一管理,均为 UTF-8 (不带BOM)!



备注:这是本人自定的、试行规范。
存盘备份时,准备两套字幕(用于实战/检验。反正,杰科G5300 ,可以切换文件名不同的字幕):

  • 普通UTF-8(不带BOM),ass字幕;
  • 带BOM的、UTF-8, ass字幕。

试行规范,是可以改的。如果,喜欢带BOM的UTF-8,就不必去除(BOM的3个字节)
sed-4-windows.rar (183.44 KB, 售价: 1 个H币)

本帖被以下淘专辑推荐:

回复

使用道具 举报

   发表回复

您需要登录后才可以回帖 登录 | 立即注册

返回列表 本版积分规则

:
白银玩家
:
未填写

主题

帖子

积分2201

  • 在线客服

  • 返回顶部