Como posso alterar a codificação de um arquivo de legenda?


14

Eu baixei uma legenda em grego para um filme, e é isso que vejo quando a abro com o Gedit.

insira a descrição da imagem aqui

A legenda funciona muito bem no VLC, tudo perfeito. Mas e se eu quiser editar esta legenda com algumas palavras gregas? Eu recebo imediatamente um erro sobre a codificação de caracteres.

insira a descrição da imagem aqui

Apertei repetir e o VLC não reconhece as legendas ...

Respostas:


16

Para edição / tradução de legendas (ou seja, legendas baseadas em texto), sugiro fortemente o Gaupol .

sudo apt-get install gaupol

Além disso gaupol, você também pode tentar o Subtitle Editor e o Gnome Subtitles .

No entanto, nas capturas de tela, fica claro que seu .srtarquivo não está codificado em Unicode.

Como se vê, iconv altera a codificação do arquivo para UTF-8, mas o arquivo convertido ainda terá os mesmos caracteres que você vê ao abrir no Gedit.

A solução que encontrei é esta:

  1. Abra o Gaupol e vá para o menu ArquivoAbrir ou clique no botão Abrir .
  2. Há um menu de seleção na parte inferior da janela aberta, intitulado Codificação de caracteres . Clique em Outro ... (última opção).

    Opção de codificação de caracteres na janela aberta do Gaupol

  3. Selecione uma codificação apropriada para o seu arquivo, por exemplo, grego ISO-8859-7 e clique no botão Aceitar .

    mostrar caixa de diálogo de codificação de caracteres

  4. Agora abra seu .srtarquivo e verifique se todos os caracteres foram renderizados corretamente. Caso contrário, repita o procedimento acima com outra codificação. Você pode executar o comando file -bi yourfile.srtpara determinar a codificação correta do seu arquivo (embora eu tenha lido os resultados não são necessariamente exatos).

  5. Com o seu arquivo de legenda aberto na codificação correta de caracteres, agora vá ao menu ArquivoSalvar como ... e altere a opção de codificação de caracteres (novamente, na parte inferior da janela) para UTF-8 e salve o arquivo (possivelmente com um novo nome, por segurança).

Este mesmo procedimento para adicionar a página de código funcionará para o Gedit . No entanto, deixo as instruções para o Gaupol, já que esta pergunta é sobre arquivos de legenda.

Boa sorte.


Eu já tenho gaupol, e mostra as palavras como minhas capturas de tela antes (em letras ilegíveis). E como eu disse antes, se eu definir UTF-8 como a nova codificação, VLC não reconhece as legendas ..
Leon Vitanos

você vai ter que codificação de mudança antes de ser capaz de editar e barbear como utf-8
carnendil

Você poderia ser um pouco mais específico? Você quer dizer alterar a codificação via salvar como? U significa mudança de codificação via terminal com "iconv"? Ambos tentaram, VLC não vai reconhecer o subtítulo depois disso
Leon Vitanos

Me desculpe, eu tive que conseguir algumas legendas em grego para verificar. De fato, iconva codificação de caracteres é alterada, mas o programa não substitui os caracteres mostrados quando abertos como UTF-8. Por favor, verifique minha resposta atualizada. Felicidades.
carnendil

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

Abra-os no editor do Kate, você poderá ver o texto correto; se ainda precisar abri-los no Gedit, em outras palavras, altere permanentemente a codificação, execute o comando terminal acima.


iconv, pelo que pude experimentar, alterará a codificação do arquivo, mas não substituirá nenhum conteúdo, ou seja, apenas os caracteres que coincidem entre as codificações de origem e de destino serão renderizados corretamente, todos os outros serão renderizados de acordo com como a codificação de destino os entende. Veja minha resposta e seus comentários.
carnendil

thnks @carnendil O que eu disse foi que altera a codificação porque também sou grego (inglês, não língua materna), obviamente eu quis dizer codificação e somente no arquivo de saída a entrada ainda fica no diretório, mas você pode ter a gentileza de implementá-lo em um script bash? devo ir para o loop "for do. iconv ... done"?
precisa saber é o seguinte

Para esse tipo de resposta, observe que ainda é necessário alterar a codificação para utf-8 nas preferências do player de vídeo #! / bin / bash para arquivo em * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" feito
billybadass

3

Eu recomendo enca. Ao contrário do gaupol, você pode lidar não apenas com arquivos de legenda, mas com qualquer arquivo de texto.

  1. Instalar enca:

    sudo apt-get install enca
    
  2. Para descobrir a codificação do arquivo, veja se o enca pode adivinhar:

    enca <file>
    

    ou, se falhar e você souber o idioma do arquivo de texto, execute por exemplo

    enca -L ru <file>
    

    e veja o que isso lhe dá. Obtenha a lista de idiomas suportados em man enca.

  3. Eu recomendo converter para UTF-8, você pode fazê-lo executando

    enconv -x utf8 <file>
    

    ou, novamente, se encanão conseguir adivinhar o idioma

    enconv -L ru -x utf8 <file>
    

    isso deve fazer o truque.


1

O problema é que o Gedit (e muitos outros aplicativos Linux) não reconhecem corretamente a codificação do texto. O VLC, por outro lado, provavelmente está configurado para reconhecê-lo corretamente (na guia "Preferências de legendas"), e é por isso que você não tem nenhum problema. A solução é simples:

Você não abre o arquivo clicando duas vezes nele, mas através da caixa de diálogo "Abrir" do Gedit . Lá, você pode encontrar no canto inferior esquerdo a drop-down for Encoding, no qual "Detectado automaticamente" é selecionado por padrão. Defina-o como "Windows-1253" ou "ISO-8859-7" e pronto, o arquivo é aberto corretamente (e você pode salvá-lo em UTF-8 para evitar problemas futuros)


0

Outro editor de legendas que permite a conversão para diferentes formatos (e vem com vários recursos) é o Aegisub . Seu formato nativo (.ass) é suportado pelo VLC Media Player, bem como pelo MPlayer, e a conversão para ele deve corrigir problemas de codificação.


0

Para traduzir arquivos SRT, você também pode usar o DualSub . É de código aberto (GPLv3) e multiplataforma. Ele usa o Google Translator.


0

Para suas informações gerais, agora existe o subtitle-index.org , que concentra muitas legendas, classifica-as em vários critérios (duração, verificação ortográfica, lisibilidade, codificação) e oferece o melhor em download direto como UTF-8.

Funcionando muito bem, evita problemas de codificação que são bastante comuns e irritantes.


0

Esta é uma função Python3 para converter qualquer arquivo de texto, incluindo legendas, em arquivos com codificação 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')
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.