如何更改字幕文件的编码?
我为电影下载了一个希腊字幕,这是我用Gedit打开时看到的。
字幕在VLC上非常有用,一切都很完美。 但是,如果我想用一些希腊语单词来编辑这个副标题呢? 我立即得到有关字符编码的错误。
我点击重试然后VLC无法识别字幕……
对于字幕版/翻译(基于文本的字幕,即),我强烈建议使用Gaupol 。
sudo apt-get install gaupol
除了gaupol
,你还可以尝试Subtitle Editor和Gnome Subtitles 。
但是,从屏幕截图中可以看出,您的.srt
文件不是用Unicode编码的。
事实certificate, iconv
确实将文件的编码更改为UTF-8,但转换后的文件仍然具有您在Gedit中打开时看到的相同字符。
我找到的解决方案是这样的:
- 打开Gaupol并转到菜单文件 → 打开或单击按钮打开 。
-
打开窗口的下半部分有一个选择菜单,名为字符编码 。 单击其他… (最后一个选项)。
-
为您的文件选择合适的编码,例如希腊语ISO-8859-7 ,然后单击“ 接受 ”按钮。
-
现在打开
.srt
文件并确保正确呈现所有字符。 否则,使用其他编码重复上述过程。 您可以运行命令file -bi yourfile.srt
来确定file -bi yourfile.srt
的正确编码(尽管我已经阅读过结果不一定准确)。 - 在您的字幕文件以正确的字符编码打开后,现在转到菜单文件 → 另存为…并将字符编码选项(再次,在窗口底部)更改为UTF-8并保存文件(可能与一个新名称,为了安全)。
添加代码页的相同过程适用于Gedit 。 然而,我留下了Gaupol的说明,因为这个问题是关于字幕文件的。
祝好运。
iconv -f ISO-8859-7 -t UTF-8 Input_file.srt > Output_file.srt
从Kate编辑器打开它们你可以看到正确的文本,如果你仍然需要从Gedit打开它们,换句话说,永久改变编码运行上面的终端命令。
我推荐enca
。 与gaupol不同,您不仅可以处理字幕文件,还可以处理任何文本文件。
-
安装enca:
sudo apt-get install enca
-
要弄清楚文件的编码,看看enca是否可以猜到它:
enca
或者,如果它失败并且您知道文本文件的语言,那么就比运行一样
enca -L ru
并看看它给你的东西。 从
man enca
获取支持的语言列表。 -
我建议转换为UTF-8,你可以通过运行来实现
enconv -x utf8
或者,如果
enca
无法猜出语言enconv -L ru -x utf8
这应该够了吧。
问题是Gedit(以及许多其他Linux应用程序)无法正确识别文本的编码。 另一方面,VLC很可能被设置为正确识别它(通过“字幕偏好”选项卡),这就是为什么你没有任何问题。 解决方案很简单:
您不要通过双击打开文件,而是通过Gedit的“打开”对话框打开文件 。 在那里,您可以在左下角找到drop-down for Encoding
的drop-down for Encoding
,默认情况下会选中“自动检测到”。 将其设置为“Windows-1253”或“ISO-8859-7”并且您很高兴,文件正确打开(然后您可以将其保存为UTF-8以避免将来出现问题)
另一个允许转换成不同格式(并附带大量function)的字幕编辑器是Aegisub 。 它的原生格式(.ass)受VLC媒体播放器以及MPlayer支持,转换到它应该可以解决编码问题。
要翻译SRT文件,您还可以使用DualSub 。 它是开源的(GPLv3)和跨平台的。 它使用谷歌翻译。
对于你的一般信息,现在有subtitle-index.org ,它集中了很多字幕,按照多个标准(持续时间,拼写检查,可靠性,编码)排名,并提供最好的直接下载为UTF-8。
工作得非常好,它避免了编码问题,这些问题非常普遍且很烦人。
这是一个Python3函数,用于将包含字幕的任何文本文件转换为具有UTF-8编码的文本。
def correctSubtitleEncoding(filename, newFilename, encoding_from='ISO-8859-7', encoding_to='UTF-8'): with open(filename, 'r', encoding=encoding_from) as fr: with open(newFilename, 'w', encoding=encoding_to) as fw: for line in fr: fw.write(line[:-1]+'\r\n')