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.
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.
Apertei repetir e o VLC não reconhece as legendas ...
No entanto, nas capturas de tela, fica claro que seu .srtarquivo não está codificado em Unicode.
Como se vê, iconvaltera 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:
Abra o Gaupol e vá para o menu Arquivo → Abrir ou clique no botão Abrir .
Há um menu de seleção na parte inferior da janela aberta, intitulado Codificação de caracteres . Clique em Outro ... (última opção).
Selecione uma codificação apropriada para o seu arquivo, por exemplo, grego ISO-8859-7 e clique no botão Aceitar .
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).
Com o seu arquivo de legenda aberto na codificação correta de caracteres, agora vá ao menu Arquivo → Salvar 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.
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.
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.
Instalar enca:
sudo apt-get install enca
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.
Eu recomendo converter para UTF-8, você pode fazê-lo executando
enconv -x utf8 <file>
ou, novamente, se encanão conseguir adivinhar o idioma
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)
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.
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.
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')
iconv
a 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.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.
fonte
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.Eu recomendo
enca
. Ao contrário do gaupol, você pode lidar não apenas com arquivos de legenda, mas com qualquer arquivo de texto.Instalar enca:
Para descobrir a codificação do arquivo, veja se o enca pode adivinhar:
ou, se falhar e você souber o idioma do arquivo de texto, execute por exemplo
e veja o que isso lhe dá. Obtenha a lista de idiomas suportados em
man enca
.Eu recomendo converter para UTF-8, você pode fazê-lo executando
ou, novamente, se
enca
não conseguir adivinhar o idiomaisso deve fazer o truque.
fonte
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)fonte
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.
fonte
Para traduzir arquivos SRT, você também pode usar o DualSub . É de código aberto (GPLv3) e multiplataforma. Ele usa o Google Translator.
fonte
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.
fonte
Esta é uma função Python3 para converter qualquer arquivo de texto, incluindo legendas, em arquivos com codificação UTF-8.
fonte