Jak mogę zmienić kodowanie pliku z napisami?

14

Pobrałem grecki napis do filmu i to właśnie widzę, gdy otwieram go za pomocą Gedit.

wprowadź opis zdjęcia tutaj

Podtytuł działa świetnie na VLC, wszystko idealnie. Ale co, jeśli chcę edytować ten podtytuł z greckimi słowami? Natychmiast pojawia się błąd dotyczący kodowania znaków.

wprowadź opis zdjęcia tutaj

Nacisnąłem ponownie, a potem VLC nie rozpoznaje napisów ...

Leon Vitanos
źródło

Odpowiedzi:

16

W przypadku edycji / tłumaczenia napisów (czyli napisów tekstowych) zdecydowanie zalecam Gaupola .

sudo apt-get install gaupol

Oprócz tego gaupolmożesz także wypróbować edytor napisów i napisy Gnome .

Jednak na zrzutach ekranu widać, że .srtplik nie jest zakodowany w standardzie Unicode.

Jak się okazuje, iconv zmienia kodowanie pliku na UTF-8, ale przekonwertowany plik nadal będzie miał te same znaki, które widzisz podczas otwierania w Gedit.

Znalazłem rozwiązanie:

  1. Otwórz Gaupol i przejdź do menu PlikOtwórz lub kliknij przycisk Otwórz .
  2. W dolnej części otwartego okna znajduje się menu wyboru, zatytułowane Kodowanie znaków . Kliknij Inne ... (ostatnia opcja).

    Opcja kodowania znaków w otwartym oknie Gaupola

  3. Wybierz odpowiednie kodowanie pliku, np. Grecki ISO-8859-7 , i kliknij przycisk Akceptuj .

    pokaż okno dialogowe kodowania znaków

  4. Teraz otwórz .srtplik i upewnij się, że wszystkie znaki są poprawnie renderowane. W przeciwnym razie powtórz powyższą procedurę z innym kodowaniem. Możesz uruchomić polecenie, file -bi yourfile.srtaby ustalić poprawne kodowanie pliku (chociaż przeczytałem, że wyniki niekoniecznie są dokładne).

  5. Po otwarciu pliku napisów z prawidłowym kodowaniem znaków przejdź teraz do menu PlikZapisz jako ... i zmień opcję kodowania znaków (ponownie u dołu okna) na UTF-8 i zapisz plik (prawdopodobnie z nowa nazwa, dla bezpieczeństwa).

Ta sama procedura dodawania strony kodowej będzie działać w Gedit . Jednak zostawiam instrukcje dla Gaupola, ponieważ to pytanie dotyczy plików z napisami.

Powodzenia.

Carnendil
źródło
Mam już gaupol, który pokazuje słowa takie jak moje zrzuty ekranu wcześniej (nieczytelnymi literami). I jak powiedziałem wcześniej, jeśli
ustawię
musisz zmienić kodowanie, zanim będziesz mógł edytować i golić się jako utf-8
carnendil
Czy możesz być bardziej szczegółowy? Yoy oznacza zmianę kodowania poprzez zapisywanie jako? Masz na myśli zmianę kodowania przez terminal z „iconv”? Obie wypróbowane, VLC nie rozpozna po tym podtytułu
Leon Vitanos
Przepraszam, musiałem zdobyć napisy w języku greckim, żeby to sprawdzić. Rzeczywiście, iconvzmienia się kodowanie znaków, ale program nie zastąpi znaków wyświetlanych po otwarciu jako UTF-8. Proszę sprawdzić moją zaktualizowaną odpowiedź. Twoje zdrowie.
carnendil
4
iconv -f ISO-8859-7 -t UTF-8  Input_file.srt   > Output_file.srt  

Otwórz je z edytora Kate, aby zobaczyć odpowiedni tekst, jeśli nadal musisz je otworzyć z Gedit, innymi słowy, trwale zmień kodyfikację, uruchom powyższe polecenie terminalu.

billybadass
źródło
iconv, ponieważ to, co mogłem eksperymentować, zmieni kodowanie pliku, ale nie zastąpi żadnej zawartości, to znaczy, tylko znaki, które pokrywają się z kodowaniem źródłowym i docelowym, będą renderowane poprawnie, wszystkie inne będą renderowane zgodnie z jak kodowanie docelowe je rozumie. Zobacz moją odpowiedź i ich komentarze.
carnendil
dzięki @carnendil to, co powiedziałem, że to zmienia kodyfikację, ponieważ jestem również greckim (angielski nie jest językiem ojczystym), oczywiście miałem na myśli kodowanie i tylko w pliku wyjściowym dane wejściowe nadal znajdują się w katalogu, ale czy możesz być na tyle miły, aby wdrożyć to w skrypcie bash? powinienem wybrać pętlę „do zrobienia. iconv ... gotowe”?
billybadass
tego rodzaju odpowiedź, pamiętaj, że nadal musisz zmienić kodowanie na utf-8 z preferencji odtwarzacza wideo #! / bin / bash dla pliku w * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" gotowe
billybadass
3

Polecam enca. W przeciwieństwie do gaupola, możesz obsługiwać nie tylko pliki napisów, ale każdy plik tekstowy.

  1. Zainstaluj enca:

    sudo apt-get install enca
    
  2. Aby dowiedzieć się, jak kodować plik, sprawdź, czy enca może go odgadnąć:

    enca <file>
    

    lub, jeśli zawiedzie i znasz język pliku tekstowego, uruchom na przykład

    enca -L ru <file>
    

    i zobacz, co ci daje. Pobierz listę obsługiwanych języków z man enca.

  3. Polecam konwersję na UTF-8, możesz to zrobić, uruchamiając

    enconv -x utf8 <file>
    

    lub ponownie, jeśli encanie można odgadnąć języka

    enconv -L ru -x utf8 <file>
    

    to powinno załatwić sprawę.

Stan
źródło
1

Problem polega na tym, że Gedit (i wiele innych aplikacji linuksowych) nie rozpoznaje poprawnie kodowania tekstu. Z drugiej strony VLC najprawdopodobniej jest ustawione na prawidłowe rozpoznawanie (poprzez zakładkę „Preferencje napisów”) i dlatego nie ma tam żadnego problemu. Rozwiązanie jest proste:

Nie otwierasz pliku poprzez dwukrotne kliknięcie, ale poprzez okno dialogowe „Otwórz” Gedit . Tam możesz znaleźć w lewym dolnym rogu a drop-down for Encoding, w którym domyślnie wybrana jest opcja „Wykryto automatycznie”. Ustaw go na „Windows-1253” lub „ISO-8859-7” i możesz zacząć, plik otwiera się poprawnie (a następnie możesz zapisać go w UTF-8, aby uniknąć problemów w przyszłości)

Giorgos_tph
źródło
0

Innym edytorem napisów, który pozwala na konwersję do różnych formatów (i ma mnóstwo funkcji) jest Aegisub . Jego rodzimy format (.ass) jest obsługiwany przez VLC Media Player, a także MPlayera i konwersja do niego powinna rozwiązać problemy z kodowaniem.

LiveWireBT
źródło
0

Do tłumaczenia plików SRT możesz także użyć DualSub . Jest to oprogramowanie typu open source (GPLv3) i wieloplatformowe. Korzysta z Google Translator.

Boni García
źródło
0

Dla twoich ogólnych informacji, teraz jest subtitle-index.org , koncentruje wiele napisów, uszeregowuje je według wielu kryteriów (czas trwania, sprawdzanie pisowni, czytelność, kodowanie) i oferuje najlepsze z bezpośredniego pobierania jako UTF-8.

Działa całkiem dobrze, pozwala uniknąć problemów z kodowaniem, które są dość powszechne i irytujące.

Lulu
źródło
0

Jest to funkcja Python3 do konwersji dowolnych plików tekstowych, w tym napisów, na pliki z kodowaniem 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')
Mojtaba Khodadadi
źródło