我下载了电影的希腊语字幕,这就是我使用Gedit打开电影时看到的内容。
字幕在VLC上效果很好,非常完美。但是,如果我想用一些希腊文字来编辑此字幕怎么办?我立即收到有关字符编码的错误。
我点击重试,然后VLC无法识别字幕...
我下载了电影的希腊语字幕,这就是我使用Gedit打开电影时看到的内容。
字幕在VLC上效果很好,非常完美。但是,如果我想用一些希腊文字来编辑此字幕怎么办?我立即收到有关字符编码的错误。
我点击重试,然后VLC无法识别字幕...
Answers:
对于字幕版本/翻译(即基于文本的字幕),我强烈建议Gaupol。
sudo apt-get install gaupol
除此之外gaupol
,您还可以尝试字幕编辑器和Gnome字幕。
但是,从屏幕截图中可以明显看出,您的.srt
文件未使用Unicode编码。
事实证明,iconv
确实会将文件的编码更改为UTF-8,但是转换后的文件仍然具有与在Gedit中打开时看到的相同字符。
我找到的解决方案是这样的:
在打开的窗口的下部有一个选择菜单,标题为字符编码。单击其他...(最后一个选项)。
为您的文件选择适当的编码,例如希腊ISO-8859-7,然后单击按钮接受。
现在打开.srt
文件,并确保正确显示所有字符。否则,请使用其他编码重复上述步骤。您可以运行命令file -bi yourfile.srt
来确定文件的正确编码(尽管我已经读过结果不一定准确)。
添加代码页的相同过程也适用于Gedit。但是,由于该问题与字幕文件有关,因此我保留了有关Gaupol的说明。
祝好运。
iconv
字符编码会更改,但是程序不会替换为以UTF-8打开时显示的字符。请检查我更新的答案。干杯。
iconv -f ISO-8859-7 -t UTF-8 Input_file.srt > Output_file.srt
如果您仍然需要从Gedit打开它们,请从Kate编辑器中打开它们,您可以看到正确的文本,换句话说,永久更改编码,请运行上述终端命令。
我建议enca
。与gaupol不同,您不仅可以处理字幕文件,还可以处理任何文本文件。
安装enca:
sudo apt-get install enca
要弄清楚文件的编码,请查看enca是否可以猜测它:
enca <file>
或者,如果失败,并且您知道文本文件的语言,则运行例如
enca -L ru <file>
看看它能给你什么。从获取支持的语言列表man enca
。
我建议转换为UTF-8,可以通过运行
enconv -x utf8 <file>
或者再次,如果enca
无法通过以下方式猜测语言
enconv -L ru -x utf8 <file>
这应该够了吧。
问题在于Gedit(以及许多其他Linux应用)无法正确识别文本的编码。另一方面,VLC可能已设置为正确识别(通过“字幕首选项”选项卡),这就是为什么在那里没有任何问题的原因。解决方案很简单:
您不会通过双击打开文件,而是通过Gedit的“打开”对话框打开。在那里,您可以在左下角找到a drop-down for Encoding
,默认情况下已选择“自动检测”。将其设置为“ Windows-1253”或“ ISO-8859-7”,就可以了,文件可以正确打开(然后可以将其保存到UTF-8以避免将来出现问题)
Aegisub是另一个允许转换为不同格式(并带有大量功能)的字幕编辑器。VLC Media Player和MPlayer支持其本机格式(.ass),将其转换为固定格式可解决编码问题。
对于您的一般信息,现在有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')