如何更改字幕文件的编码?


14

我下载了电影的希腊语字幕,这就是我使用Gedit打开电影时看到的内容。

在此处输入图片说明

字幕在VLC上效果很好,非常完美。但是,如果我想用一些希腊文字来编辑此字幕怎么办?我立即收到有关字符编码的错误。

在此处输入图片说明

我点击重试,然后VLC无法识别字幕...

Answers:


16

对于字幕版本/翻译(即基于文本的字幕),我强烈建议Gaupol

sudo apt-get install gaupol

除此之外gaupol,您还可以尝试字幕编辑器Gnome字幕

但是,从屏幕截图中可以明显看出,您的.srt文件使用Unicode编码。

事实证明,iconv 确实会将文件的编码更改为UTF-8,但是转换后的文件仍然具有与在Gedit中打开时看到的相同字符。

我找到的解决方案是这样的:

  1. 打开Gaupol并进入菜单FileOpen或单击Open按钮。
  2. 在打开的窗口的下部有一个选择菜单,标题为字符编码。单击其他...(最后一个选项)。

    Gaupol的打开的窗口中的字符编码选项

  3. 为您的文件选择适当的编码,例如希腊ISO-8859-7,然后单击按钮接受

    显示字符编码对话框

  4. 现在打开.srt文件,并确保正确显示所有字符。否则,请使用其他编码重复上述步骤。您可以运行命令file -bi yourfile.srt来确定文件的正确编码(尽管我已经读过结果不一定准确)。

  5. 用正确的字符编码打开字幕文件后,现在进入菜单File另存为...,然后将字符编码选项(同样在窗口底部)更改为UTF-8并保存文件(可能使用为安全起见,使用新名称)。

添加代码页的相同过程也适用于Gedit。但是,由于该问题与字幕文件有关,因此我保留了有关Gaupol的说明。

祝好运。


我已经有gaupol了,它显示了以前的屏幕快照之类的单词(以不可读的字母显示)。正如我以前说过,如果我设置UTF-8作为新的编码,VLC无法识别字幕..
莱昂Vitanos

您必须先更改编码,然后才能像utf-8一样进行编辑和剃刮
carnendil 13-4-3

您能更具体一点吗?Yoy是指通过另存为更改编码?U平均值更改通过终端使用“ iconv”编码吗?两者都尝试过,之后VLC将无法识别字幕
Leon Vitanos

对不起,我必须给自己找一些希腊语字幕才能检查。确实,iconv字符编码会更改,但是程序不会替换为以UTF-8打开时显示的字符。请检查我更新的答案。干杯。
carnendil

4
iconv -f ISO-8859-7 -t UTF-8  Input_file.srt   > Output_file.srt  

如果您仍然需要从Gedit打开它们,请从Kate编辑器中打开它们,您可以看到正确的文本,换句话说,永久更改编码,请运行上述终端命令。


iconv,对于我能够进行的实验,它将更改文件的编码,但不会替代任何内容,也就是说,只有源编码和目标编码之间一致的字符才能正确呈现,所有其他字符将根据目标编码如何理解它们。查看我的答案和他们的评论。
carnendil

thnks @carnendil我说的是它更改了编码,因为我也是希腊语(英语而不是母语),显然我的意思是编码,并且仅在输出文件中,输入仍保留在目录中,但是您是否足够友好在bash脚本中实现它?我应该去“ for do。iconv ... done”循环吗?
Billybadass

回答这类问题,请注意,仍必须将视频播放器首选项中的编码更改为utf-8!* .srt中文件的/ bin / bash执行iconv -f ISO-8859-7 -t UTF-8 -o“ $ file.new”“ $ file” && mv -f“ $ file.new”“ $ file”完成
Billybadass

3

我建议enca。与gaupol不同,您不仅可以处理字幕文件,还可以处理任何文本文件。

  1. 安装enca:

    sudo apt-get install enca
    
  2. 要弄清楚文件的编码,请查看enca是否可以猜测它:

    enca <file>
    

    或者,如果失败,并且您知道文本文件的语言,则运行例如

    enca -L ru <file>
    

    看看它能给你什么。从获取支持的语言列表man enca

  3. 我建议转换为UTF-8,可以通过运行

    enconv -x utf8 <file>
    

    或者再次,如果enca无法通过以下方式猜测语言

    enconv -L ru -x utf8 <file>
    

    这应该够了吧。


1

问题在于Gedit(以及许多其他Linux应用)无法正确识别文本的编码。另一方面,VLC可能已设置为正确识别(通过“字幕首选项”选项卡),这就是为什么在那里没有任何问题的原因。解决方案很简单:

您不会通过双击打开文件,而是通过Gedit的“打开”对话框打开。在那里,您可以在左下角找到a drop-down for Encoding,默认情况下已选择“自动检测”。将其设置为“ Windows-1253”或“ ISO-8859-7”,就可以了,文件可以正确打开(然后可以将其保存到UTF-8以避免将来出现问题)


0

Aegisub是另一个允许转换为不同格式(并带有大量功能)的字幕编辑器。VLC Media Player和MPlayer支持其本机格式(.ass),将其转换为固定格式可解决编码问题。



0

对于您的一般信息,现在有subtitle-index.org,它集中了许多字幕,并根据多个条件(持续时间,拼写检查,可粘贴性,编码)对它们进行排名,并提供了直接下载中最好的字幕,即UTF-8。

工作得很好,它避免了编码问题,这些问题是常见的和令人讨厌的。


0

这是一个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')
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.