Bir altyazı dosyasının kodlamasını nasıl değiştirebilirim?


14

Bir film için Yunanca altyazı indirdim ve Gedit ile açtığımda bunu görüyorum.

resim açıklamasını buraya girin

Altyazı VLC'de harika çalışıyor, hepsi mükemmel. Ama bu altyazıyı bazı Yunanca kelimelerle düzenlemek istersem ne olur? Anında karakter kodlaması hakkında bir hata alıyorum.

resim açıklamasını buraya girin

Tekrar denedim ve VLC altyazıları tanımıyor ...

Yanıtlar:


16

Altyazı basımı / çeviri (metin tabanlı altyazılar) için Gaupol'u şiddetle öneririm .

sudo apt-get install gaupol

Ayrıca, Altyazı Editörü ve Gnome Altyazılarınıgaupol da deneyebilirsiniz .

Ancak, Ekran görüntülerinden, açıktır .srtdosya olduğu değil Unicode kodlanmış.

Sonradan anlaşıldı ki, iconv değiştirmek yapar UTF-8'e, dosyanın kodlamasını ama dönüştürülen dosya hala Gedit içinde zaman açılış bakınız aynı karakterlere sahip olacaktır.

Bulduğum çözüm şudur:

  1. Gaupol'u açın ve Dosya menüsüne gidin veya düğmesine tıklayın .
  2. Açık pencerenin alt kısmında Karakter kodlaması başlıklı bir seçim menüsü bulunur . Diğer ... 'e tıklayın (son seçenek).

    Gaupol'un açık penceresinde karakter kodlama seçeneği

  3. Dosyanız için uygun bir kodlama seçin, örneğin Greek ISO-8859-7 ve Kabul Et düğmesine tıklayın .

    karakter kodlamasını göster iletişim kutusu

  4. Şimdi .srtdosyanızı açın ve tüm karakterlerin doğru şekilde oluşturulduğundan emin olun. Aksi takdirde, yukarıdaki prosedürü başka bir kodlamayla tekrarlayın. file -bi yourfile.srtDosyanızın doğru kodlamasını belirlemek için komutu çalıştırabilirsiniz (sonuçları okuduğum halde kesin olarak kesin değildir).

  5. Altyazı dosyanız doğru karakter kodlamasında açıkken, şimdi DosyaFarklı kaydet ... menüsüne gidin ve karakter kodlama seçeneğini (yine pencerenin altında) UTF-8 olarak değiştirin ve dosyayı kaydedin (muhtemelen güvenlik için yeni bir ad).

Kod sayfası ekleme işleminin aynısı Gedit için de geçerlidir . Ancak bu soru altyazı dosyaları ile ilgili olduğu için Gaupol için talimatları bırakıyorum.

İyi şanslar.


Zaten gaupol var ve daha önce ekran görüntüleri gibi kelimeleri (okunamayan harflerle) gösteriyor. Daha önce de söylediğim gibi, UTF-8'i yeni kodlama olarak ayarlarsam, VLC altyazıları tanımaz ..
Leon Vitanos

utf-8 olarak düzenlemeden ve tıraş olmadan önce kodlamayı değiştirmeniz gerekecek
carnendil

Biraz daha spesifik olabilir misiniz? Yoy farklı kaydetme yoluyla kodlama değiştirmek mi? U "iconv" ile terminal üzerinden kod değiştirmek mi? Her ikisi de denedi, VLC bundan sonra altyazıyı tanımayacak
Leon Vitanos

Üzgünüm, kontrol edebilmek için kendime Yunanca altyazı almak zorunda kaldım. Aslında, iconvkarakter kodlaması değişir, ancak program UTF-8 olarak açıldığında gösterilen karakterlerin yerine geçmez. Lütfen güncellenmiş cevabımı kontrol edin. Şerefe.
carnendil

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

Kate editörünü açın, uygun metni görebilirsiniz, yine de bunları Gedit'ten açmanız gerekiyorsa, başka bir deyişle, yukarıdaki terminal komutunu çalıştırmak için kodlamayı kalıcı olarak değiştirin.


iconv, deneyebildiğim için dosyanın kodlamasını değiştirecek, ancak içeriğin yerine geçmeyecek, yani yalnızca kaynak ve hedef kodlamalar arasında çakışan karakterler doğru şekilde görüntülenecek, diğerleri hedef kodlamanın onları nasıl anladığı. Bkz Cevabımı ve kendi yorumlarını.
carnendil

thnks @carnendil söyledim ne kodlama değiştirdi, çünkü ben de Yunanca (İngilizce ana dil değil), açıkçası kodlama demekti ve sadece çıktı dosyasında giriş hala dizinde duruyor, ama yeterince nazik olabilir misin bash komut dosyasında uygulamak? "for do. iconv ... done" döngüsüne gitmeli miyim?
billybadass

Bu tür bir cevap, yine de video oynatıcı tercihleri ​​# # kodlama utf-8 değiştirmek zorunda unutmayın! / bin / bash dosyasında * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ dosya" && mv -f "$ file.new" "$ dosya" tamamlandı
billybadass

3

Ben tavsiye ederim enca. Gaupol'ün aksine, sadece altyazı dosyalarını değil, herhangi bir metin dosyasını da işleyebilirsiniz.

  1. Enca yükleyin:

    sudo apt-get install enca
    
  2. Dosyanın kodlamasını anlamak için enca'nın tahmin edip edemeyeceğini görün:

    enca <file>
    

    veya başarısız olursa ve metin dosyasının dilini biliyorsanız, örneğin çalıştırmak

    enca -L ru <file>
    

    ve size ne verdiğini görün. Desteklenen dillerin listesini buradan alın man enca.

  3. UTF-8'e dönüştürmenizi tavsiye ederim, çalıştırarak yapabilirsiniz

    enconv -x utf8 <file>
    

    veya yine, encadili tahmin edemezse

    enconv -L ru -x utf8 <file>
    

    hile yapmalı.


1

Sorun, Gedit'in (ve diğer birçok linux uygulamasının) metnin kodlamasını doğru şekilde tanımamasıdır. Öte yandan VLC, büyük olasılıkla ("Altyazı tercihleri" sekmesi aracılığıyla) doğru bir şekilde tanıyacak şekilde ayarlanmıştır ve bu yüzden orada herhangi bir sorununuz yoktur. Çözüm basit:

Dosyayı çift tıklatarak açmazsınız, ancak Gedit'in "Aç" iletişim kutusu aracılığıyla açarsınız . Burada, sol alt tarafta drop-down for Encodingvarsayılan olarak "Otomatik Olarak Algılandı" nın seçildiği a'yı bulabilirsiniz. "Windows-1253" veya "ISO-8859-7" olarak ayarlayın ve hazırsınız, dosya doğru bir şekilde açılır (ve daha sonra gelecekteki sorunları önlemek için UTF-8'e kaydedebilirsiniz)


0

Farklı formatlara dönüştürmeye izin veren (ve tonlarca özellikle birlikte gelen) başka bir altyazı editörü Aegisub . Doğal biçimi (.ass) VLC Media Player ve MPlayer tarafından desteklenir ve dönüştürmek kodlama sorunlarını çözmelidir.


0

SRT dosyalarını çevirmek için DualSub'ı da kullanabilirsiniz . Açık kaynak kodlu (GPLv3) ve çapraz platformdur. Google Translator kullanıyor.


0

Genel bilgileriniz için artık subtitle-index.org var yoğunlaştırıyor, bunları birden fazla kritere göre sıralıyor (süre, yazım denetimi, uygunluk, kodlama) ve doğrudan en iyi olanı UTF-8 olarak sunuyor.

Oldukça iyi çalışarak, oldukça ortak ve rahatsız edici olan kodlama problemlerini önler.


0

Bu, altyazılar dahil tüm metin dosyalarını UTF-8 kodlamalı olanlara dönüştürmek için bir Python3 işlevidir.

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')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.