SubtitleMedic

Sửa lỗi font phụ đề tiếng Việt: nhận ra lỗi và sửa đúng cách

Cập nhật 18 tháng 10, 2026

Bạn tải phụ đề tiếng Việt về, mở phim lên và thấy những dòng như Xin chà o, Chµo b¹n hay Chaøo baïn. Người ta hay gọi đó là lỗi font, nhưng thật ra font không có lỗi gì: file được lưu bằng một bảng mã (cách đổi chữ thành byte), còn trình phát lại đọc bằng một bảng mã khác.

Tin vui là mỗi kiểu lỗi để lại một dấu vết riêng. Chỉ cần nhìn vài ký tự lạ là biết file đang ở bảng mã nào, và cách sửa gần như luôn giống nhau: đọc lại file bằng đúng bảng mã rồi lưu thành UTF-8, loại mọi trình phát, TV và trang web ngày nay đều đọc được.

Nhìn ký tự lạ, biết ngay lỗi gì

Lấy câu “Xin chào, bạn khỏe không?” làm ví dụ. Tùy bảng mã của file và cách trình phát đọc, nó có thể hiện ra như sau.

“Xin chà o, bạn khá»e” — UTF-8 bị đọc sai

Mỗi chữ có dấu biến thành hai, ba ký tự bắt đầu bằng Ã, Ä, Æ hay á»: đ thành Ä‘, ố thành ố, ư thành ư.

Có hai khả năng:

  • File vẫn đúng, trình phát đọc sai. File là UTF-8 nhưng trình phát (thường là TV đời cũ hoặc phần mềm cài sẵn bảng mã Tây Âu) đọc nó theo Windows-1252.
  • File đã bị hỏng từ trước. Ai đó mở file UTF-8 bằng một trình soạn thảo đọc theo Windows-1252, rồi lưu lại thành UTF-8. Lúc này các ký tự rác nằm luôn trong file, trình phát nào cũng hiện ra y như vậy.

Cả hai trường hợp đều sửa được. Với trường hợp thứ hai, công cụ nhận ra từng dòng bị chuyển mã hai lần và đổi chữ về như cũ.

“Chµo b¹n, ®­îc kh«ng?” — font TCVN3 (ABC)

Những ký tự như µ, ¹, ®, «, ¬, Ö, Õ lẫn trong chữ là dấu hiệu của TCVN3, còn gọi là bảng mã ABC, đi kèm các font .VnTime, .VnArial. Đây là chuẩn của Việt Nam từ năm 1993, rất phổ biến trong phụ đề cũ, tài liệu Word và các trang web đầu những năm 2000.

Một vài cặp dễ nhận: µ là à, ¹ là ạ, ® là đ, « là ô, ¬ là ơ, ­ (dấu gạch mềm, thường không nhìn thấy) là ư. Vì vậy “được” hiện thành ®­îc mà như chỉ có ba ký tự.

TCVN3 không có mã cho chữ hoa có dấu: hồi đó chữ hoa được vẽ bằng một font riêng (.VnTimeH). Khi chuyển sang Unicode, những chữ ấy thành chữ thường, nên “Ở” có thể hiện thành “ở”.

“Chaøo baïn, ñöôïc khoâng?” — font VNI

Nếu chữ cái vẫn đọc được nhưng sau nguyên âm có thêm một ký tự lạ như ø, ù, û, õ, ï, â, ä, và chữ đ biến thành ñ, đó là VNI-Windows, đi kèm các font VNI-Times, VNI-Helve. VNI viết mỗi chữ có dấu thành hai byte: nguyên âm gốc rồi đến dấu.

Một vài cặp dễ nhận: aø là à, aï là ạ, eä là ệ, oâ là ô, ô là ơ, ö là ư, ñ là đ. Vì vậy “Việt Nam” hiện thành Vieät Nam, “được” thành ñöôïc.

“Xin chào, baòn khoÒe” — Windows-1258 bị đọc như Windows-1252

Phần lớn chữ vẫn đúng, chỉ một số chữ có dấu nặng, hỏi, ngã bị lệch: bạn thành baòn, khỏe thành khoÒe. Đây là Windows-1258, bảng mã tiếng Việt của Microsoft. Nó lưu dấu thanh thành một byte riêng đứng sau nguyên âm, nên đọc nhầm sang Windows-1252 thì dấu biến thành chữ khác.

“Xin ch?o, b?n kh?e” hoặc “Xin ch�o” — file cũ bị đọc như UTF-8

Dấu hỏi ? hoặc hình thoi có dấu hỏi � thay cho chữ có dấu nghĩa là trình phát đọc file theo UTF-8, còn file thật ra ở một bảng mã cũ (Windows-1258, TCVN3 hoặc VNI). Các byte có dấu không hợp lệ trong UTF-8 nên bị thay bằng ký tự thay thế.

Ô vuông □□ — thiếu font, không phải lỗi bảng mã

Nếu mở file bằng trình soạn thảo thấy chữ đúng, nhưng trình phát hiện ô vuông, thì file không có lỗi gì. Font phụ đề của trình phát chỉ đơn giản là không có hình cho chữ Việt. Hãy đổi font phụ đề sang Arial, Tahoma hay Roboto. Riêng TV thì tìm mục ngôn ngữ phụ đề hoặc bộ ký tự trong cài đặt và chọn tiếng Việt.

Sửa trong một bước

  1. Mở Sửa lỗi font phụ đề và thả file .srt, .vtt, .ass, .sbv hay .sub vào. File được đọc ngay trong trình duyệt, không tải lên đâu cả.
  2. Công cụ thử mọi bảng mã nó biết, gồm cả Windows-1258, TCVN3 và VNI, rồi chọn bảng mã cho ra chữ Việt hợp lệ nhất. Phần xem trước tô xanh các chữ có dấu để bạn kiểm tra.
  3. Nếu công cụ chưa chắc, nó liệt kê vài cách đọc cạnh nhau. Chọn bản có chữ đúng, không cần biết tên bảng mã.
  4. Tải file về. File giữ nguyên tên và định dạng, chỉ khác là đã ở UTF-8. Đặt nó cạnh video, thay cho file cũ.

Thời gian, ngắt dòng và định dạng như chữ nghiêng đều giữ nguyên. Chỉ cách lưu chữ thay đổi.

Đã lưu UTF-8 mà TV vẫn hiện sai?

Một số TV và đầu phát đời cũ chỉ nhận ra UTF-8 khi đầu file có dấu BOM (ba byte đánh dấu). Trong công cụ, hãy tích Thêm BOM cho TV và trình phát đời cũ rồi tải lại. Nếu TV vẫn không hiện phụ đề, bài Vì sao TV không hiện phụ đề đi qua các nguyên nhân khác như tên file hay định dạng.

Nếu chữ đã đúng nhưng hiện kèm các mã như <font color=...> hay {\an8}, hãy xóa chúng bằng Bỏ định dạng khỏi phụ đề. Còn nếu chữ đúng mà câu thoại hiện quá sớm hay quá muộn, hãy dùng Chỉnh thời gian phụ đề.

Vì sao tiếng Việt có nhiều bảng mã đến vậy

Trước khi Unicode phổ biến vào khoảng giữa những năm 2000, máy tính chỉ dùng bảng mã một byte, tức 256 ký tự. Tiếng Việt cần khoảng 134 chữ có dấu, nhiều hơn chỗ trống còn lại sau chữ Latin cơ bản. Mỗi nhóm giải quyết theo một cách: TCVN3 bỏ chữ hoa có dấu, VNI tách dấu ra thành byte riêng, Windows-1258 dùng dấu kết hợp, VISCII lấy luôn cả vùng ký tự điều khiển. Kết quả là một file phụ đề chỉ đọc đúng khi máy cài đúng bộ font.

UTF-8 giải quyết tất cả: mọi chữ Việt, kể cả chữ hoa có dấu, đều có mã riêng, và mọi thiết bị hiện đại đều đọc được. Đó là lý do công cụ luôn lưu file thành UTF-8.

Mọi công cụ trên SubtitleMedic đều chạy trong trình duyệt. File phụ đề của bạn được đọc ngay trên máy và không bao giờ bị tải lên.

Công cụ cho việc này