+6

Unicode BOM là gì? Tại sao mở file csv trên Excel có chứa ký tự unicode lại bị vỡ?

Đã bao giờ bạn đã nghe hoặc gặp phải cụm từ UTF-8 và. UTF-8 without BOM? Đã bao giờ bạn mở 1 file csv được export từ hệ thống bạn đang thực hiện lại bị vỡ khi mở bằng Microsoft Excel? Thì bài viết này là để dành cho bạn. 😂 Mình là Trường (Dominic) từ Giftee, là một công ty chuyên cung cấp dịch vụ eGift hàng đầu tại Nhật, công ty mình rất chú trọng về trãi nghiệm người dùng cả về end user cũng như là business user nên việc mở một file csv bằng Microsoft Excel không thể đọc được sẽ không được bỏ qua cho dù các ứng dụng khác vẫn thể hiện tốt.

BOM là gì?

BOM là viết tắt của cụm từ Byte Order Mark theo Unicode Standard được sử dụng để biểu thị rằng một tập tin văn bản sử dụng mã hoá Unicode. Và vì Unicode sẽ có nhiều tiêu chuẩn đặc thù nên để biết được file đang định dạng ở chuẩn Unicode nào, ở đầu mỗi Unicode file sẽ có từ 2 bytes đến 3 bytes thể hiện tiêu chuẩn này, nó được gọi là BOM.

image.png Danh sách các BOM theo các tiêu chuẩn Unicode

Microsoft Excel

Và MS Excel là một bên rất tuân thủ tiêu chuẩn này, nếu các file csv của bạn không có BOM và trong file csv của bạn có các ký tự Unicode thì khả năng cao bạn sẽ nhận được các ký tự không thể đọc được. Hãy nhìn vào ví dụ thực tế

CSV file được encoding theo chuẩn UTF-8 without BOM

image.png Kiểm tra 3 bytes đầu tiên của file chúng ta thấy được 3 bytes này không thuộc bất kỳ tiêu chuẩn nào ở table bên trên và dưới đây là kết quả mở file csv này bằng Microsoft Excel.

image.png

CSV file được encoding theo chuẩn UTF-8 BOM

image.png Như bạn có thể thấy, 3 bytes đầu tiên đang được thể hiện là ef bb bf như tiêu chuẩn của UTF-8 ở table và kết quả đã đẹp hơn rất nhiều. image.png

Kết luận

Trên thực tế, việc này không chỉ ảnh hưởng đến các file có chứa ký tự tiếng Việt như trong ví dụ mà còn là các ký tự nằm ngoài các ký tự ASCII tiêu chuẩn như tiếng Nhật, Hàn, Trung, Thái,… Việc người dùng bình thường mở file csv bằng Microsoft Excel sẽ rất thường gặp, với mục tiêu cung cấp trãi nghiệm tốt thì đây là một trãi nghiệm luôn cần được chú trọng.

Dominic from giftee Tech Vietnam


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.