2008-11-14 41 views
38

Tôi có tệp XSD được mã hóa bằng UTF-8 và mọi trình soạn thảo văn bản tôi chạy qua không hiển thị bất kỳ ký tự nào ở đầu tệp, nhưng khi tôi kéo nó trong trình gỡ lỗi của Visual Studio, tôi thấy rõ một ô trống ở phía trước tệp.XML - Dữ liệu ở cấp cơ sở không hợp lệ

Box in file

Tôi cũng nhận được lỗi:

dữ liệu ở cấp độ gốc không hợp lệ. Line 1, vị trí 1.

alt text

Bất cứ ai cũng biết điều này là gì?

Cập nhật: Đã chỉnh sửa bài đăng để đủ điều kiện loại tệp. Đó là một tệp XSD được tạo bởi người tạo XSD của Microsoft.

Trả lời

53

Nó quay ra, câu trả lời là những gì tôi thấy là một Byte Order Mark, là một ký tự cho biết bất cứ điều gì đang tải tài liệu nó được mã hóa. Trong trường hợp của tôi, nó được mã hóa trong utf-8, BOM tương ứng là EF BB BF, như được hiển thị bên dưới. Để xóa nó, tôi đã mở nó trong Notepad++ và nhấp vào "Mã hóa bằng UTF-8 không có BOM", như hình dưới đây:

Saving in NotePad++.

Để thực sự xem BOM, tôi phải mở nó trong TextPad ở chế độ nhị phân :, và tiến hành Google search for "EF BB BF".

binary mode

Tôi mất khoảng 8 giờ để tìm hiểu điều này là những gì đã gây ra nó, vì vậy tôi nghĩ rằng tôi muốn chia sẻ với tất cả mọi người.

Cập nhật: Nếu tôi đã đọc bài đăng trên blog của Joel Spolsky: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), thì có thể tôi chưa gặp sự cố này.

28

dưới đây là cách bạn làm điều đó với vim:

# vim file.xml 
:set nobomb 
:wq 
Các vấn đề liên quan