- vừa được xem lúc

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

0 0 1

Người đăng: Nhat Truong

Theo Viblo Asia

Đã 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.

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

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.

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

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.

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Django: Handling CSV Data

Khi làm việc với các dự án Python hay Django thì phần xử lý CSV hầu như là không thể thiếu. Qua bài viết này, các bạn hãy cùng mình hiểu rõ hơn về CSV cũng như xử lý chúng ra sao nhé.

0 0 29

- vừa được xem lúc

Tìm hiểu Unicode

Is Unicode a 16-bit encoding. Một điều mà nhiều người đến nay vẫn nhầm tưởng là Unicode sử dụng 16 bit để mã hóa, bởi vậy nó chỉ có thể mã hóa tối đa 65536 ký tự.

0 0 23