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 ...

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.


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.


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ę.


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)


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.


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.


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.


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')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.