Chuyển đến nội dung chính
SubtitleMatrix

Chuyển encoding tệp phụ đề

Văn bản và kiểuSửa encoding và BOM
Hoặc dán văn bản phụ đề

Tùy chọn

Điều này thay đổi các byte, không thay đổi phụ đề. Mọi ký tự trong tệp được ghi bằng encoding bạn chọn, nên một trình phát hoặc một script đòi một encoding nhất định sẽ nhận được tệp đọc được. UTF-8 là encoding mọi thứ hiện đại mong đợi và là encoding trang này ghi ở mọi nơi khác. UTF-8 có BOM là cùng các byte đó với dấu ba byte ở phía trước. UTF-16 LE là thứ các chương trình Windows gọi là Unicode và có kích thước xấp xỉ gấp đôi. Windows-1252 là encoding Tây Âu cũ, một byte mỗi ký tự, và là encoding cần cẩn thận: nó không có chỗ cho tiếng Trung, Nhật, Hàn, Kirin, Hy Lạp hay emoji, nên mỗi ký tự nó không ghi được sẽ ra dấu hỏi và được đếm trong báo cáo ở trên. Không có gì khác trong tệp thay đổi.

Các mốc thời gian được tính theo frame rate nào. Trên các trang định dạng, đây là thông số MicroDVD cần, vì định dạng này lưu thời gian dưới dạng số khung hình. Trên các trang frame rate, đây là tốc độ mà tệp được tính theo — phiên bản mà phụ đề được làm cho — và ô thứ hai của trang nhận tốc độ của video mà bạn sẽ dùng phụ đề cùng. 23.976, 24, 25, 29.97, 30, 50, 59.94 và 60 là những giá trị thường gặp. Điền sai sẽ làm lệch toàn bộ dòng thời gian, và trên các trang frame rate, nó làm lệch theo một tỉ lệ chứ không phải một lượng cố định.

Trang này ghi lại tệp phụ đề bằng một bảng mã khác: UTF-8, UTF-8 có BOM, UTF-16LE hoặc Windows-1252. Tệp được xử lý trong trình duyệt, không tải lên máy chủ, và chạy được hàng loạt.

Đây là thao tác trên cách ghi byte chứ không phải trên nội dung: văn bản, timecode, số cue và thứ tự cue không đổi. UTF-16LE dùng hai byte cho phần lớn ký tự và luôn kèm BOM, nên tệp thường lớn khoảng gấp đôi; UTF-16BE không có trong danh sách vì nó chỉ tồn tại để giữ nguyên đầu vào, không phải để người dùng chọn.

Windows-1252 không ghi được chữ Hán, chữ Kirin hay emoji: mỗi ký tự như vậy thành dấu `?` và được đếm trong báo cáo, nên bạn biết chính xác đã mất bao nhiêu. Mười hai định dạng đều được nhận, và không có byte nào rời khỏi máy.

Ví dụ

Một tệp UTF-8 sang UTF-8 có BOM

Đầu vào

1
00:00:01,000 --> 00:00:02,000
The room is dark.

Kết quả

1
00:00:01,000 --> 00:00:02,000
The room is dark.

Cùng một văn bản, cùng timecode, nhưng tệp bắt đầu bằng ba byte BOM. Hãy so phần đầu của hai tệp để thấy khác biệt duy nhất nằm ở đó. Đây là lựa chọn đúng khi đích đến cần dấu BOM nhưng vẫn đọc theo UTF-8.

Một tệp UTF-8 sang UTF-16LE

Đầu vào

1
00:00:01,000 --> 00:00:02,000
The room is dark.

Kết quả

1
00:00:01,000 --> 00:00:02,000
The room is dark.

Mỗi ký tự Latinh giờ chiếm hai byte và tệp bắt đầu bằng BOM hai byte của UTF-16LE. Tệp lớn khoảng gấp đôi, trong khi văn bản và timecode hoàn toàn không đổi. BOM là bắt buộc ở đây: không có nó, phần mềm đọc sẽ nhầm byte UTF-16 thành UTF-8 và nhận ra một tệp rỗng.

Một tệp có chữ ngoài bảng Latinh sang Windows-1252

Đầu vào

1
00:00:01,000 --> 00:00:02,000
こんにちは

Kết quả

1
00:00:01,000 --> 00:00:02,000
こんにちは

Mỗi ký tự không có trong Windows-1252 thành một dấu `?`, và báo cáo đếm đúng số ký tự đã mất. Đây là ví dụ rõ nhất cho việc chọn bảng mã là quyết định về nội dung: bảng mã hẹp hơn sẽ làm mất những gì nó không biểu diễn được, và trang này nói ra thay vì để bạn phát hiện sau.

Câu hỏi thường gặp

Trang đổi encoding cho tệp phụ đề hỗ trợ những bảng mã nào?

Bốn lựa chọn: UTF-8, UTF-8 có BOM, UTF-16LE và Windows-1252. Đây là những bảng mã mà trình duyệt vừa đọc vừa ghi được. UTF-16BE không có trong danh sách vì nó chỉ dùng để giữ nguyên tệp đầu vào, không phải để chọn.

Chuyển phụ đề sang Windows-1252 có làm mất chữ không?

Có, với mọi ký tự nằm ngoài bảng Windows-1252: chữ Hán, chữ Nhật, chữ Hàn, chữ Kirin, tiếng Việt có dấu và emoji đều thành dấu `?`. Trang đếm số ký tự bị thay và ghi vào báo cáo, nên bạn biết chính xác mức mất mát trước khi giao tệp.

Vì sao tệp phụ đề UTF-16LE lại lớn gần gấp đôi sau khi chuyển encoding?

Vì UTF-16LE dùng hai byte cho phần lớn ký tự, trong khi UTF-8 dùng một byte cho chữ Latinh không dấu. Tệp còn có thêm hai byte BOM ở đầu. Kích thước tăng không có nghĩa nội dung dài hơn; văn bản và timecode giữ nguyên.

Đổi encoding có làm thay đổi timecode hay nội dung phụ đề không?

Không, trừ những ký tự mà bảng mã đích không ghi được. Với UTF-8, UTF-8 có BOM và UTF-16LE, toàn bộ văn bản và timecode giữ nguyên từng ký tự; Windows-1252 thay ký tự không biểu diễn được bằng `?` và đếm số lần thay.

Khi nào nên chọn UTF-8 có BOM thay vì UTF-8 thường?

Khi đích đến yêu cầu dấu BOM để nhận ra tệp là UTF-8, chẳng hạn một số hệ thống phát sóng. Dấu này là ký tự U+FEFF được ghi thành ba byte `EF BB BF` ở đầu tệp. Với phần lớn nền tảng web và trình phát hiện đại, UTF-8 không BOM là lựa chọn an toàn hơn vì không có ký tự ẩn ở đầu tệp.

Có thể đổi encoding cho những định dạng phụ đề nào?

Cả mười hai định dạng mà trang này đọc: SRT, WebVTT, ASS, SSA, SBV, SAMI, LRC, MicroDVD, TTML, JSON, văn bản trơn và CSV. Bảng mã chỉ quyết định cách ghi byte; nó không phụ thuộc vào cú pháp của định dạng.

Công cụ liên quan