Gỡ BOM khỏi tệp phụ đề
Hoặc dán văn bản phụ đề
Tùy chọn
BOM là ba byte ở đầu tệp nói rõ tệp đang dùng encoding nào. Nó vô hình trong mọi trình soạn thảo và trình phát, không chiếm chỗ trên màn hình, và không có gì trong phụ đề thay đổi khi thêm hoặc bỏ nó. Hai loại công cụ quan tâm đến nó: các chương trình Windows ghi phụ đề, vốn mặc định thêm một BOM, và các bộ phân tích nghiêm ngặt trong đường ống build, vốn từ chối tệp bắt đầu bằng BOM. Trang này mở ô ở trạng thái mà tiêu đề của nó gọi tên, nên bạn có thể đảo lại nếu hóa ra tệp của mình ở trạng thái ngược lại. Một tệp UTF-16 luôn mang BOM, vì đó là cách trình đọc biết nó đang nhìn thấy thứ tự byte nào trong hai thứ tự — yêu cầu xóa BOM ở đó sẽ để nó nguyên tại chỗ.
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 gỡ dấu BOM ở đầu tệp phụ đề, kể cả khi tệp có nhiều dấu xếp liền nhau. 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.
Kiểu kết thúc dòng được giữ nguyên: tệp dùng LF vẫn dùng LF, tệp dùng CRLF vẫn dùng CRLF. Tệp không có dấu BOM nào trở về giống hệt từng byte. Với tệp UTF-16LE hoặc UTF-16BE, dấu BOM là thứ duy nhất cho phép đọc tệp đúng, nên nó được giữ lại dù bạn yêu cầu gỡ — sản phẩm vẫn đọc được quan trọng hơn một quy tắc hình thức.
BOM không phải nội dung, nên văn bản, timecode, số cue và thứ tự cue không đổi. Mười hai định dạng đều được nhận, và không có tệp nào rời khỏi máy.
Ví dụ
Một tệp SRT 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.
Ba byte đầu biến mất và phần còn lại trở về nguyên vẹn, kể cả kiểu kết thúc dòng. Đây là dạng tệp mà một số công cụ hiển thị dấu lạ ở đầu dòng đầu tiên; sau khi chạy, dòng đầu bắt đầu bằng số cue như mong đợi.
Một tệp có hai dấu BOM
Đầu vào
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Kết quả
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
Cả hai đều đi, không chỉ dấu đầu. Tệp hai dấu thường là kết quả của hai công cụ cùng thêm BOM; gỡ một dấu sẽ để lại một dấu và vấn đề vẫn còn. Đây là lý do trang lặp cho đến khi không còn dấu nào ở đầu tệp.
Một tệp 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.
Tệp trở về không đổi, và đó là chủ đích. Với UTF-16, dấu BOM là thứ duy nhất cho phần mềm đọc biết các byte là UTF-16 chứ không phải UTF-8; gỡ nó sẽ khiến tệp đọc thành một chuỗi ký tự xen kẽ byte rỗng. Trang giữ dấu để tệp vẫn dùng được.
Câu hỏi thường gặp
BOM ở đầu tệp phụ đề là gì và vì sao cần xóa?
Đó là ký tự U+FEFF đứng ở đầu tệp, thường được ghi thành ba byte `EF BB BF` cho UTF-8. Một số công cụ hiển thị nó thành dấu lạ ở đầu dòng đầu tiên hoặc không nhận ra số cue đầu. Gỡ nó giúp tệp đọc sạch trên các công cụ đó.
Xóa BOM khỏi phụ đề có làm thay đổi nội dung hay timecode không?
Không. BOM không phải nội dung nên văn bản, timecode, số cue và thứ tự cue giữ nguyên. Trang chỉ gỡ các ký tự U+FEFF ở đầu tệp; mọi thứ còn lại được ghi như cũ.
Chuyện gì xảy ra với tệp phụ đề có nhiều dấu BOM?
Tất cả các dấu ở đầu tệp đều bị gỡ, không chỉ dấu đầu tiên. Tệp có hai dấu thường do hai công cụ cùng thêm; chỉ gỡ một dấu sẽ để lại một dấu và vấn đề vẫn còn. Trang lặp đến khi phần đầu tệp sạch.
Vì sao tệp UTF-16 của tôi vẫn còn BOM sau khi xóa BOM?
Vì với UTF-16, dấu BOM là thứ duy nhất giúp phần mềm đọc nhận ra các byte là UTF-16. Không có nó, tệp sẽ bị đọc thành UTF-8 và hiện ra một chuỗi ký tự xen kẽ byte rỗng. Trang giữ dấu để sản phẩm vẫn dùng được.
Xóa BOM có làm đổi kiểu kết thúc dòng của tệp phụ đề không?
Không. Tệp dùng LF vẫn dùng LF và tệp dùng CRLF vẫn dùng CRLF; trang chỉ gỡ các ký tự ở đầu tệp. Muốn đổi kiểu xuống dòng, hãy dùng trang đổi kết thúc dòng LF và CRLF cho phụ đề.
Xóa BOM áp dụng được 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. BOM nằm ngoài cú pháp định dạng nên nó được xử lý ở byte đầu của tệp trong mọi trường hợp.