ฉันจะเปลี่ยนการเข้ารหัสไฟล์คำบรรยายได้อย่างไร


14

ฉันดาวน์โหลดคำบรรยายภาษากรีกสำหรับภาพยนตร์และนี่คือสิ่งที่ฉันเห็นเมื่อฉันเปิดมันด้วย Gedit

ป้อนคำอธิบายรูปภาพที่นี่

คำบรรยายใช้งานได้ดีกับ VLC ทุกอย่างสมบูรณ์แบบ แต่ถ้าฉันต้องการแก้ไขคำบรรยายนี้ด้วยคำภาษากรีก? ฉันได้รับข้อผิดพลาดเกี่ยวกับการเข้ารหัสอักขระทันที

ป้อนคำอธิบายรูปภาพที่นี่

ฉันลองส่งใหม่แล้ว VLC ไม่รู้จักคำบรรยาย ...

คำตอบ:


16

สำหรับคำบรรยายรุ่น / การแปล (คำบรรยายข้อความตามที่มี) ผมขอแนะนำGaupol

sudo apt-get install gaupol

นอกจากนี้ของgaupolคุณยังสามารถลองแก้ไขคำบรรยายและคำพังเพยคำบรรยาย

อย่างไรก็ตามจากภาพหน้าจอเป็นที่ชัดเจนว่า.srtไฟล์ของคุณไม่ได้เข้ารหัสใน Unicode

ตามที่ปรากฎให้iconv เปลี่ยนการเข้ารหัสไฟล์เป็น UTF-8 แต่ไฟล์ที่แปลงแล้วจะยังคงมีอักขระตัวเดิมที่คุณเห็นเมื่อเปิดใน Gedit

วิธีแก้ปัญหาที่ฉันพบคือ:

  1. เปิด Gaupol และไปที่เมนูไฟล์เปิดหรือคลิกที่ปุ่มเปิด
  2. มีเมนูตัวเลือกในส่วนล่างของหน้าต่างที่เปิดให้มีบรรดาศักดิ์เป็นเข้ารหัสตัวอักษร คลิกที่อื่น ๆ ... (ตัวเลือกสุดท้าย)

    ตัวเลือกการเข้ารหัสอักขระในหน้าต่างที่เปิดของ Gaupol

  3. เลือกการเข้ารหัสที่เหมาะสมสำหรับไฟล์ของคุณเช่นกรีก ISO-8859-7และคลิกที่ปุ่มยอมรับ

    แสดงกล่องโต้ตอบการเข้ารหัสอักขระ

  4. ตอนนี้เปิด.srtไฟล์ของคุณและตรวจสอบให้แน่ใจว่าตัวละครทั้งหมดถูกแสดงอย่างถูกต้อง มิฉะนั้นให้ทำซ้ำขั้นตอนข้างต้นด้วยการเข้ารหัสอื่น คุณสามารถเรียกใช้คำสั่งfile -bi yourfile.srtเพื่อตรวจสอบการเข้ารหัสไฟล์ของคุณได้อย่างถูกต้อง

  5. ขณะที่ไฟล์คำบรรยายของคุณเปิดในการเข้ารหัสอักขระที่ถูกต้องตอนนี้ไปที่เมนูไฟล์บันทึกเป็น ...และเปลี่ยนตัวเลือกการเข้ารหัสอักขระ (อีกครั้งที่ด้านล่างของหน้าต่าง) เป็น UTF-8 และบันทึกไฟล์ (อาจเป็น ชื่อใหม่เพื่อความปลอดภัย)

นี้ขั้นตอนเดียวกันของการเพิ่มเพจรหัสจะทำงานให้ Gedit แต่ฉันจะทิ้งคำแนะนำไว้สำหรับ Gaupol เนื่องจากคำถามนี้เกี่ยวกับไฟล์คำบรรยาย

โชคดี.


ฉันมี gaupol แล้วและจะแสดงคำเหมือนภาพหน้าจอของฉันก่อนหน้า (เป็นตัวอักษรที่อ่านไม่ได้) และที่ผมกล่าวก่อนถ้าผมตั้ง UTF-8 เป็นเข้ารหัสใหม่ VLC ไม่รู้จักคำบรรยาย ..
Leon Vitanos

คุณจะต้องเปลี่ยนการเข้ารหัสก่อนที่จะสามารถแก้ไขและโกนได้เช่น utf-8
carnendil

คุณจะเจาะจงเจาะจงมากกว่านี้หน่อยได้ไหม? Yoy หมายถึงการเปลี่ยนการเข้ารหัสผ่านบันทึกเป็น? คุณหมายถึงการเปลี่ยนรหัสผ่านเทอร์มินัลด้วย "iconv" หรือไม่ ทั้งสองพยายาม VLC จะไม่รู้จักคำบรรยายหลังจากนั้น
Leon Vitanos

ฉันขอโทษฉันต้องทำให้ตัวเองมีคำบรรยายภาษากรีกบางส่วนเพื่อตรวจสอบ อันที่จริงแล้วiconvการเข้ารหัสตัวอักษรมีการเปลี่ยนแปลง แต่โปรแกรมจะไม่แทนที่อักขระที่แสดงเมื่อเปิดเป็น UTF-8 โปรดตรวจสอบคำตอบที่อัปเดตของฉัน ไชโย
carnendil

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

เปิดได้จากเครื่องมือแก้ไข Kate คุณจะเห็นข้อความที่ถูกต้องหากคุณยังต้องการเปิดจาก Gedit หรือกล่าวอีกนัยหนึ่งให้เปลี่ยนการประมวลผลแบบถาวรให้รันคำสั่งเทอร์มินัลด้านบน


iconvสำหรับสิ่งที่ฉันสามารถทดลองได้จะเปลี่ยนการเข้ารหัสของไฟล์ แต่จะไม่แทนที่เนื้อหาใด ๆ นั่นคือเฉพาะอักขระที่ตรงกันระหว่างการเข้ารหัสต้นทางและเป้าหมายจะแสดงอย่างถูกต้องคนอื่น ๆ ทั้งหมดจะแสดงตาม การเข้ารหัสเป้าหมายเข้าใจได้อย่างไร ดูคำตอบและความคิดเห็นของพวกเขา
carnendil

thnks @carnendil สิ่งที่ฉันบอกว่ามันเป็นการเปลี่ยนการประมวลผลเพราะฉันยังเป็นภาษากรีก (ภาษาอังกฤษไม่ใช่ภาษาแม่) เห็นได้ชัดว่าฉันหมายถึงการเข้ารหัสและในไฟล์เอาต์พุตเท่านั้นอินพุตยังคงอยู่ในไดเรกทอรี แต่คุณสามารถใจดีพอที่จะ ใช้มันในสคริปต์ทุบตี? ฉันควรจะไปหาวง "for do. iconv ... done" หรือไม่
billybadass

ตอบแบบนั้นโปรดทราบว่ายังคงต้องเปลี่ยนการเข้ารหัสเป็น utf-8 จากการตั้งค่าเครื่องเล่นวิดีโอ #! / bin / bash สำหรับไฟล์ใน * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" เสร็จแล้ว
billybadass

3

encaผมอยากแนะนำให้ ซึ่งแตกต่างจาก gaupol คุณสามารถจัดการไม่เพียงไฟล์คำบรรยาย แต่ไฟล์ข้อความใด ๆ

  1. ติดตั้ง enca:

    sudo apt-get install enca
    
  2. หากต้องการทราบว่าการเข้ารหัสไฟล์ดูว่า enca สามารถเดาได้หรือไม่:

    enca <file>
    

    หรือถ้ามันล้มเหลวและคุณรู้ภาษาของไฟล์ข้อความมากกว่าที่จะเรียกใช้

    enca -L ru <file>
    

    และดูว่ามันให้อะไรคุณ man encaรับรายชื่อของภาษาที่สนับสนุนจาก

  3. ฉันอยากจะแนะนำให้เปลี่ยนเป็น UTF-8 คุณสามารถทำได้โดยใช้

    enconv -x utf8 <file>
    

    หรืออีกครั้งหากencaไม่สามารถคาดเดาภาษาได้

    enconv -L ru -x utf8 <file>
    

    ที่ควรทำเคล็ดลับ


1

ปัญหาคือ Gedit (และแอพ linux อื่น ๆ ) ไม่รู้จักการเข้ารหัสข้อความอย่างถูกต้อง ในทางกลับกัน VLC อาจถูกตั้งค่าให้จดจำได้อย่างถูกต้อง (ผ่านแท็บ "การตั้งค่าคำบรรยาย") และนั่นคือสาเหตุที่คุณไม่มีปัญหาใด ๆ การแก้ปัญหาง่ายมาก:

คุณไม่ได้เปิดไฟล์โดยดับเบิลคลิกมัน แต่ผ่าน Gedit "เปิด" โต้ตอบ คุณจะพบที่ด้านซ้ายล่าง a drop-down for Encodingซึ่งมีการเลือก "ตรวจหาอัตโนมัติ" ตามค่าเริ่มต้น ตั้งค่าเป็น "Windows-1253" หรือ "ISO-8859-7" และคุณพร้อมที่จะไปไฟล์เปิดอย่างถูกต้อง (และจากนั้นคุณสามารถบันทึกเป็น UTF-8 เพื่อหลีกเลี่ยงปัญหาในอนาคต)


0

แก้ไขคำบรรยายอีกที่ช่วยให้การแปลงในรูปแบบที่แตกต่างกัน (และมาพร้อมกับตันคุณลักษณะ) เป็นAegisub รูปแบบดั้งเดิม (.ass) ได้รับการสนับสนุนโดย VLC Media Player เช่นเดียวกับ MPlayer และการแปลงเป็นควรแก้ไขปัญหาการเข้ารหัส


0

สำหรับการแปลไฟล์ SRT คุณยังสามารถใช้DualSub เป็นโอเพ่นซอร์ส (GPLv3) และข้ามแพลตฟอร์ม มันใช้ Google Translator


0

สำหรับข้อมูลทั่วไปของคุณตอนนี้มีซับไตเติ้ลดอร์เน็กซ์มันมีคำบรรยายมากมายจัดอันดับตามเกณฑ์ต่างๆ (ระยะเวลาตรวจสอบตัวสะกดการเข้ารหัสการเข้ารหัส) และนำเสนอสิ่งที่ดีที่สุดในการดาวน์โหลดโดยตรงเป็น UTF-8

ทำงานได้ดีมันหลีกเลี่ยงปัญหาการเข้ารหัสซึ่งเป็นเรื่องธรรมดาและน่ารำคาญ


0

นี่คือฟังก์ชั่น Python3 สำหรับการแปลงไฟล์ข้อความใด ๆ รวมถึงคำบรรยายลงในไฟล์ที่มีการเข้ารหัส 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')
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.