Bagaimana saya bisa mengubah penyandian file subtitle?

14

Saya mengunduh subtitle Yunani untuk film, dan inilah yang saya lihat ketika saya membukanya dengan Gedit.

masukkan deskripsi gambar di sini

Subtitle sangat bagus di VLC, semuanya sempurna. Tetapi bagaimana jika saya ingin mengedit subtitle ini dengan beberapa kata Yunani? Saya langsung mendapatkan kesalahan tentang pengkodean karakter.

masukkan deskripsi gambar di sini

Saya menekan coba lagi dan kemudian VLC tidak mengenali subtitle ...

Leon Vitanos
sumber

Jawaban:

16

Untuk edisi subtitle / terjemahan (subtitle berbasis teks, yaitu), saya sangat menyarankan Gaupol .

sudo apt-get install gaupol

Selain itu gaupol, Anda juga dapat mencoba Subtitle Editor dan Gnome Subtitle .

Namun, dari tangkapan layar, jelas bahwa .srtfile Anda tidak dikodekan dalam Unicode.

Ternyata, iconv memang mengubah penyandian file ke UTF-8, tetapi file yang dikonversi masih akan memiliki karakter yang sama yang Anda lihat ketika membuka di Gedit.

Solusi yang saya temukan adalah ini:

  1. Buka Gaupol dan buka menu FileOpen atau klik tombol Open .
  2. Ada menu pilihan di bagian bawah jendela terbuka, berjudul Pengodean karakter . Klik pada Lainnya ... (opsi terakhir).

    Opsi pengkodean karakter di jendela terbuka Gaupol

  3. Pilih penyandian yang sesuai untuk file Anda, mis. Yunani ISO-8859-7 , dan klik tombol Terima .

    tampilkan kotak dialog pengkodean karakter

  4. Sekarang buka .srtfile Anda dan pastikan semua karakter ditampilkan dengan benar. Jika tidak, ulangi prosedur di atas dengan penyandian lain. Anda dapat menjalankan perintah file -bi yourfile.srtuntuk menentukan penyandian file yang benar (meskipun saya sudah membaca hasilnya belum tentu tepat).

  5. Dengan file subtitle Anda terbuka di pengkodean karakter yang benar, sekarang pergi ke menu FileSave as ... dan ubah opsi pengkodean karakter (lagi, di bagian bawah jendela) ke UTF-8 dan simpan file tersebut (mungkin dengan nama baru, untuk keamanan).

Prosedur yang sama untuk menambahkan codepage ini akan berfungsi untuk Gedit . Namun saya meninggalkan instruksi untuk Gaupol karena pertanyaan ini adalah tentang file subtitle.

Semoga berhasil.

carnendil
sumber
Saya sudah memiliki gaupol, dan itu menunjukkan kata-kata seperti tangkapan layar saya sebelumnya (dalam huruf yang tidak dapat dibaca). Dan seperti yang saya katakan sebelumnya, jika saya menetapkan UTF-8 sebagai encoding baru, VLC tidak mengenali subtitle ..
Leon Vitanos
Anda harus mengubah penyandian sebelum dapat mengedit dan mencukur sebagai utf-8
carnendil
Bisakah Anda sedikit lebih spesifik? Yoy berarti mengubah penyandian via save as? U berarti mengubah penyandian melalui terminal dengan "iconv"? Keduanya mencoba, VLC tidak akan mengenali subtitle setelah itu
Leon Vitanos
Maaf, saya harus membuat sendiri beberapa terjemahan bahasa Yunani untuk memeriksa. Memang, iconvapakah pengkodean karakter berubah, tetapi program tidak akan menggantikan karakter yang ditampilkan ketika dibuka sebagai UTF-8. Silakan periksa jawaban saya yang diperbarui. Bersulang.
carnendil
4
iconv -f ISO-8859-7 -t UTF-8  Input_file.srt   > Output_file.srt  

Buka dari editor Kate Anda dapat melihat teks yang tepat, jika Anda masih perlu membukanya dari Gedit, dengan kata lain, secara permanen mengubah kodifikasi menjalankan perintah terminal di atas.

billybadass
sumber
iconv, untuk apa yang saya dapat bereksperimen, akan mengubah penyandian file, tetapi tidak akan mengganti konten mana pun, yaitu, hanya karakter yang bertepatan antara sumber dan target pengkodean akan membuat dengan benar, semua yang lain akan membuat menurut bagaimana target encoding memahaminya. Lihat jawaban saya dan komentar mereka.
carnendil
thnks @carnendil apa yang saya katakan itu adalah bahwa ia mengubah kodifikasi karena saya juga Yunani (bahasa Inggris bukan bahasa ibu), jelas saya maksud pengkodean dan hanya dalam file output input masih berdiri di direktori, tetapi bisakah Anda berbaik hati untuk mengimplementasikannya dalam skrip bash? saya harus pergi untuk loop "untuk melakukan. iconv ... selesai"?
billybadass
jawaban semacam itu, perhatikan bahwa masih harus mengubah encoding ke utf-8 dari preferensi pemutar video #! / bin / bash untuk file di * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" selesai
billybadass
3

Saya akan merekomendasikan enca. Tidak seperti gaupol, Anda tidak hanya dapat menangani file subtitle, tetapi file teks apa pun.

  1. Instal enca:

    sudo apt-get install enca
    
  2. Untuk mengetahui penyandian file, lihat apakah enca dapat menebaknya:

    enca <file>
    

    atau, jika gagal dan Anda tahu bahasa file teks, daripada menjalankan misalnya

    enca -L ru <file>
    

    dan lihat apa yang memberi Anda. Dapatkan daftar bahasa yang didukung dari man enca.

  3. Saya akan merekomendasikan untuk mengonversi ke UTF-8, Anda dapat melakukannya dengan menjalankan

    enconv -x utf8 <file>
    

    atau, sekali lagi, jika encatidak dapat menebak bahasanya

    enconv -L ru -x utf8 <file>
    

    yang seharusnya melakukan trik.

Stan
sumber
1

Masalahnya adalah bahwa Gedit (dan banyak aplikasi linux lainnya) tidak mengenali dengan benar penyandian teks. VLC di sisi lain kemungkinan besar diatur untuk mengenalinya dengan benar (melalui tab "Subtitle preferensi"), dan itulah mengapa Anda tidak memiliki masalah di sana. Solusinya sederhana:

Anda tidak membuka file dengan mengklik dua kali, tetapi melalui dialog "Buka" Gedit . Di sana, Anda dapat menemukan di sisi kiri bawah a drop-down for Encoding, di mana "Secara otomatis Terdeteksi" dipilih secara default. Setel ke "Windows-1253" atau "ISO-8859-7" dan Anda dapat melakukannya, file terbuka dengan benar (dan Anda dapat menyimpannya ke UTF-8 untuk menghindari masalah di masa mendatang)

Giorgos_tph
sumber
0

Editor subtitle lain yang memungkinkan untuk mengkonversi ke berbagai format (dan dilengkapi dengan banyak fitur) adalah Aegisub . Format asli (.ass) didukung oleh VLC Media Player serta MPlayer dan mengonversinya harus memperbaiki masalah penyandian.

LiveWireBT
sumber
0

Untuk menerjemahkan file SRT, Anda juga dapat menggunakan DualSub . Ini adalah open-source (GPLv3) dan cross-platform. Ini menggunakan Google Translator.

Boni García
sumber
0

Untuk informasi umum Anda, sekarang ada subtitle-index.org , ia memusatkan banyak subtitle, memberi peringkat pada beberapa kriteria (durasi, pemeriksaan ejaan, kelonggaran, penyandian), dan menawarkan yang terbaik dalam unduhan langsung sebagai UTF-8.

Bekerja cukup baik, ini menghindari masalah pengkodean yang cukup umum dan menjengkelkan.

Lulu
sumber
0

Ini adalah fungsi Python3 untuk mengonversi file teks apa pun termasuk subtitle menjadi yang dengan pengkodean 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
sumber