建议SRT字幕编码统一为Unicode格式(附UTF-8编码区别)

最近业余时间主要在研究高清机器,这东东(RT1703DD方案)其实就是一台嵌入式系统的电脑,Linux系统的可供DIY的地方不少。

 

现在的高清节目源主要来自PT交流,美剧和大片的字幕来源主要靠网友自发组织的翻译组。

 

SRT现在已经是电脑和高清机上最普遍的字幕格式,以前一般保存格式为ANSI的文本,现在也有Unicode或者UTF-8格式的出现。

 

电脑上问题不大,字幕识别比较智能化,但高清机一般需要设置。鉴于字符集的关系,建议放弃以往的ANSI,统一保存为Unicode(默认为UTF-16)。现在很多MKV封装的字幕已经在使用Unicode格式,高清机设置为ANSI字幕时会乱码,需要改设。

 

Unicode是现在网页制作的标准编码,未来应该也是SRT字幕的规范的方向。身体力行,我目前收的所有影视资料的SRT字幕如果不是Unicode,已经统一转成这个格式,便于高清机油们交流。

 

附: unicode是一种统一编码,把所有语言各种单位都赋予一个编码。unicode定义的字符编码默认是每字符4个字节32位。这种完整的32位编码方式就是UCS-4:

1、UTF-32,UCS-4,32位

2、UTF-8保持字母数字一个字节,其它的用不定长编码到最多到6个字节,支持到31位编码。前64K的unicode(UCS-2)编成UTF-8只需3个字节。

3、UTF-16以及UTF-7(UTF-7是UTF-16的二次编码)支持到1M+64K编码范围,使用2-4个字节编码。目前应该没有字符编码超过1M之外。[1]

4、UCS-2也就是普通Windows使用的Unicode子集。他只能表示64K的编码范围。对有些偏僻汉字超出64k是无法编码的。这里UCS-2不等同于UTF-16。UCS-2每个字符固定两个字节。UTF-16是2/4个字节。

5、UCS-2和UTF-16的区别在于是否支持4字节编码。Unicode定义时保留了D800-DFFF区间的编码。这段编码是没有对应字符的,只用于UTF-16内部使用。方法是:1M+64M的编码减去64K后得到1M范围(20位),高10位用D800-DBFF表示,低10位用DC00- DFFF表示,这个就是UTF-16的ensurrogate编码方式。

6、为什么用UTF-8。只是因为UTF-8的两个优点,128以下编码和单字节处理软件兼容。第二个是UTF-8的多字节编码没有部分字节混淆问题。比如删除半汉字后整行乱码的问题在UTF-8里是不会出现的(UTF-16也有相同的特点);任何一个字节的损坏都只影响对应的那个字符,其它字符都可以完整恢复。

 

[1] 部分软件如UltraEdit、Editplus等保存为Unicode其实默认为UTF-16。

你可能感兴趣的:(软件测评)