Chà, tôi đang sử dụng NotePad ++ và tôi hoàn toàn không thể thấy điều đó! Trình đọc tệp văn bản tốt nhất cho loại vấn đề này là gì?
Vấn đề là, một trình soạn thảo văn bản, có thể tải tất cả các mã hóa văn bản một cách trong suốt - ngay cả những trình duyệt bị hỏng ngu ngốc như UTF-8-plus-BOM - sẽ ngăn bạn nhìn thấy vấn đề. Chắc chắn, một trình soạn thảo văn bản tốt sẽ lưu UTF-8 mà không có BOM giả, hoặc ít nhất cung cấp cho bạn tùy chọn để làm như vậy, nhưng bạn sẽ không biết lưu lại nếu bạn không thấy BOM giả ở đó .
Lý do bạn thấy ba byte cao khi bắt đầu tệp trong TextMate thực sự là vì TextMate đã hiểu sai và đoán mã hóa là Latin-1 thay vì UTF-8. Điều này có lẽ tái tạo hành vi của dịch vụ mà bạn gửi mà không biết về Unicode, nhưng bản thân nó không thực sự là một tính năng mong muốn. Đó cũng là lý do tại sao æ
S và ø
S chưa đi ra.
Nếu bạn muốn xem rõ ràng từng byte trong tệp, những gì bạn muốn không thực sự là trình soạn thảo văn bản, mà là trình soạn thảo hex. Có rất nhiều để lựa chọn, ví dụ. xvi32 trên Windows.
Và sau đó sửa ứng dụng của bạn để không tạo ra BOM không có thật; dù sao họ cũng không có chỗ trong tệp UTF-8, không bao giờ bận tâm đến các vấn đề mà nó gây ra cho các ứng dụng không phải là Unicode. [Tôi không biết ứng dụng được viết trong đó là gì, nhưng một nguyên nhân phổ biến của các BOM không mong muốn là sử dụng .NET Encoding.UTF8
mã hóa. Một new UTF8Encoding(false)
sẽ thích hợp hơn.]
Cho dù dịch vụ bạn đang gửi đến muốn UTF-8 hay một số mã hóa khác trong mọi trường hợp, bạn sẽ phải hỏi các nhà khai thác dịch vụ đó. Nếu họ đã mô tả các byte cao cho æ
et al trong tập tin của bạn vốn dĩ là không hợp lệ, bạn có thể phải đối mặt với tình huống họ không hỗ trợ bất kỳ ký tự không phải ASCII nào, trong trường hợp đó bạn sẽ phải xem xét chuyển ngữ các ký tự phù hợp cho ngôn ngữ đích, ví dụ. æ
- & gt; ae
.