Làm cách nào để thay đổi mã hóa của tệp phụ đề?


14

Tôi đã tải xuống một phụ đề tiếng Hy Lạp cho một bộ phim và đây là những gì tôi thấy khi tôi mở nó bằng Gedit.

nhập mô tả hình ảnh ở đây

Phụ đề hoạt động tuyệt vời trên VLC, tất cả đều hoàn hảo. Nhưng nếu tôi muốn chỉnh sửa phụ đề này bằng một số từ Hy Lạp thì sao? Tôi ngay lập tức nhận được một lỗi về mã hóa ký tự.

nhập mô tả hình ảnh ở đây

Tôi nhấn thử lại và sau đó VLC không nhận ra phụ đề ...

Câu trả lời:


16

Đối với phiên bản phụ đề / bản dịch (phụ đề dựa trên văn bản, nghĩa là), tôi đề nghị Gaupol .

sudo apt-get install gaupol

Ngoài ra gaupol, bạn cũng có thể thử Trình chỉnh sửa phụ đềPhụ đề Gnome .

Tuy nhiên, từ các ảnh chụp màn hình, rõ ràng .srttệp của bạn không được mã hóa bằng Unicode.

Hóa ra, iconv không thay đổi mã hóa tệp thành UTF-8, nhưng tệp được chuyển đổi sẽ vẫn có cùng các ký tự bạn nhìn thấy khi mở trong Gedit.

Giải pháp tôi tìm thấy là đây:

  1. Mở Gaupol và vào menu TệpMở hoặc nhấp vào nút Mở .
  2. Có một menu lựa chọn ở phần dưới của cửa sổ mở, có tiêu đề Mã hóa ký tự . Nhấp vào Khác ... (tùy chọn cuối cùng).

    Tùy chọn mã hóa ký tự trong cửa sổ mở của Gaupol

  3. Chọn một mã hóa thích hợp cho tệp của bạn, ví dụ tiếng Hy Lạp ISO-8859-7 và nhấp vào nút Chấp nhận .

    hiển thị hộp thoại mã hóa ký tự

  4. Bây giờ hãy mở .srttệp của bạn và đảm bảo tất cả các ký tự được hiển thị chính xác. Nếu không, lặp lại thủ tục trên với một mã hóa khác. Bạn có thể chạy lệnh file -bi yourfile.srtđể xác định mã hóa chính xác cho tệp của mình (mặc dù tôi đã đọc kết quả không nhất thiết phải chính xác).

  5. Với tệp phụ đề của bạn được mở trong mã hóa ký tự chính xác, bây giờ hãy chuyển đến menu TệpLưu dưới dạng ... và thay đổi tùy chọn mã hóa ký tự (một lần nữa, ở dưới cùng của cửa sổ) thành UTF-8 và lưu tệp (có thể bằng một tên mới, cho an toàn).

Quy trình tương tự thêm mã này sẽ hoạt động cho Gedit . Tuy nhiên, tôi để lại hướng dẫn cho Gaupol vì câu hỏi này là về các tệp phụ đề.

Chúc may mắn.


Tôi đã có gaupol và nó hiển thị các từ như ảnh chụp màn hình của tôi trước đây (bằng các chữ cái không thể đọc được). Và như tôi đã nói trước đây, nếu tôi đặt UTF-8 làm mã hóa mới, VLC sẽ không nhận ra phụ đề ..
Leon Vitanos

bạn sẽ phải thay đổi mã hóa trước khi có thể chỉnh sửa và cạo râu như utf-8
Carnendil

Bạn có nói rõ hơn được không? Yoy có nghĩa là thay đổi mã hóa thông qua lưu dưới dạng? Bạn có nghĩa là mã hóa thay đổi thông qua thiết bị đầu cuối với "iconv"? Cả hai đã cố gắng, VLC sẽ không nhận ra phụ đề sau đó
Leon Vitanos

Tôi xin lỗi, tôi phải lấy cho mình một số phụ đề tiếng Hy Lạp để kiểm tra. Thật vậy, iconvmã hóa ký tự thay đổi, nhưng chương trình sẽ không thay thế các ký tự được hiển thị khi được mở dưới dạng UTF-8. Vui lòng kiểm tra câu trả lời cập nhật của tôi. Chúc mừng.
Carnendil

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

Mở chúng từ trình soạn thảo Kate, bạn có thể thấy văn bản phù hợp, nếu bạn vẫn cần mở chúng từ Gedit, nói cách khác, thay đổi vĩnh viễn mã hóa chạy lệnh đầu cuối ở trên.


iconv, với những gì tôi có thể thử nghiệm, sẽ thay đổi mã hóa tệp, nhưng sẽ không thay thế bất kỳ nội dung nào, nghĩa là chỉ các ký tự trùng giữa mã hóa nguồn và đích sẽ hiển thị chính xác, tất cả các mã khác sẽ hiển thị theo làm thế nào mã hóa mục tiêu hiểu chúng. Xem câu trả lời của tôi và ý kiến ​​của họ.
Carnendil

thnks @carnendil điều tôi đã nói là nó thay đổi cách mã hóa bởi vì tôi cũng là người Hy Lạp (tiếng Anh không phải tiếng mẹ đẻ), rõ ràng tôi có nghĩa là mã hóa và chỉ trong tệp đầu ra, đầu vào vẫn đứng trong thư mục, nhưng bạn có thể đủ tử tế để thực hiện nó trong một kịch bản bash? Tôi có nên đi vòng lặp "for do. iconv ... xong" không?
billybadass

Đó là loại câu trả lời, lưu ý rằng vẫn phải thay đổi mã hóa thành utf-8 từ tùy chọn trình phát video #! / bin / bash cho tệp trong * .srt do iconv -f ISO-8859-7 -t UTF-8 -o "$ file.new" "$ file" && mv -f "$ file.new" "$ file" xong
billybadass

3

Tôi muốn giới thiệu enca. Không giống như gaupol, bạn có thể xử lý không chỉ các tệp phụ đề, mà bất kỳ tệp văn bản nào.

  1. Cài đặt mã hóa:

    sudo apt-get install enca
    
  2. Để tìm ra mã hóa của tập tin, hãy xem nếu enca có thể đoán nó:

    enca <file>
    

    hoặc, nếu nó không thành công và bạn biết ngôn ngữ của tệp văn bản, hơn là chạy chẳng hạn

    enca -L ru <file>
    

    và xem những gì nó mang lại cho bạn. Lấy danh sách các ngôn ngữ được hỗ trợ từ man enca.

  3. Tôi khuyên bạn nên chuyển đổi sang UTF-8, bạn có thể làm điều đó bằng cách chạy

    enconv -x utf8 <file>
    

    hoặc, một lần nữa, nếu encakhông thể đoán ngôn ngữ bằng

    enconv -L ru -x utf8 <file>
    

    Điều đó sẽ làm các trick.


1

Vấn đề là Gedit (và nhiều ứng dụng linux khác) không nhận dạng chính xác mã hóa của văn bản. Mặt khác, VLC có lẽ được thiết lập để nhận ra nó một cách chính xác (thông qua tab "Tùy chọn phụ đề") và đó là lý do tại sao bạn không gặp vấn đề gì ở đó. Giải pháp rất đơn giản:

Bạn không mở tệp bằng cách bấm đúp vào tệp, nhưng qua hộp thoại "Mở" của Gedit . Ở đó, bạn có thể tìm thấy ở phía dưới bên trái a drop-down for Encoding, trong đó "Tự động phát hiện" được chọn theo mặc định. Đặt nó thành "Windows-1253" hoặc "ISO-8859-7" và bạn vẫn ổn, tệp sẽ mở một cách chính xác (và sau đó bạn có thể lưu nó vào UTF-8 để tránh các sự cố trong tương lai)


0

Một trình chỉnh sửa phụ đề khác cho phép chuyển đổi thành các định dạng khác nhau (và đi kèm với vô số tính năng) là Aegisub . Định dạng gốc của nó (.ass) được hỗ trợ bởi VLC Media Player cũng như MPlayer và chuyển đổi sang nó để khắc phục các sự cố mã hóa.


0

Để dịch các tệp SRT, bạn cũng có thể sử dụng DualSub . Nó là mã nguồn mở (GPLv3) và đa nền tảng. Nó sử dụng Google Translator.


0

Đối với thông tin chung của bạn, hiện có phụ đề-index.org , nó tập trung rất nhiều phụ đề, xếp hạng chúng theo nhiều tiêu chí (thời lượng, kiểm tra chính tả, khả năng hiển thị, mã hóa) và cung cấp bản tải xuống trực tiếp tốt nhất dưới dạng UTF-8.

Hoạt động khá tốt, nó tránh được các vấn đề mã hóa khá phổ biến và gây khó chịu.


0

Đây là một hàm Python3 để chuyển đổi bất kỳ tệp văn bản nào, bao gồm cả phụ đề thành các tệp có mã hóa 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')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.