Cách kiểm tra xem tập tin có BOM trong văn bản utf-8 không


18

Làm cách nào để kiểm tra xem tệp văn bản utf-8 có BOM từ dòng lệnh không?

filelệnh cho tôi thấy UTF-8 Unicode text.

Nhưng tôi không biết điều đó có nghĩa là không có BOM trong tập tin.

Tôi đang sử dụng Ubuntu 12.04.


Lưu ý rằng không có BOM trong UTF-8: đó là một tính năng của UTF-16. Tệp UTF-8 có thể bắt đầu bằng ký tự U + FEFF, nhưng trong trường hợp đó là không gian có độ rộng bằng không.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


29

filesẽ cho bạn biết nếu có BOM. Bạn có thể kiểm tra:

$ /usr/bin/printf "\ufeff...\n" | file -
/dev/stdin: UTF-8 Unicode (with BOM) text

Lưu ý: theo filethay đổi, tính năng này đã tồn tại vào năm 2007. Vì vậy, tính năng này sẽ hoạt động trên mọi máy hiện tại.


1
Cảm ơn về câu trả lời. filePhiên bản của tôi là file-5.09và kết quả là /dev/stdin: ASCII text. Có phụ thuộc vào phiên bản của file?
ironsand

@Tetsu Tôi đã thử nghiệm với file5.04 (nén Debian) và nó vẫn ổn. Ngay cả trong năm 2007, theo các thay đổi (không được thử nghiệm). Nhưng bạn có thể làm bài kiểm tra mà tôi đã đưa ra trong câu trả lời của tôi.
vinc17

Tôi chỉ cần cài đặt language-pack-jatừ apt, sau đó ví dụ của bạn hoạt động hoàn hảo. Cảm ơn bạn đã giúp đỡ!
ironsand

4

Nếu bạn thực hiện stat fileNamenó sẽ cung cấp cho bạn chính xác ba ký tự. Khi tôi mở tệp trong trình chỉnh sửa, tôi không thể thấy gì. Vì vậy, nhận thấy rằng kích thước tập tin là 3 cho tôi rõ ràng rằng nó có BOM.

Ngoài ra, bài viết ở đây là hữu ích trong trường hợp của tôi.

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.