Sử dụng Visual Studio 2010. Tôi có tệp resource.h mà TortoiseHg nghĩ là nhị phân để nó không hiển thị khác biệt cho nó trong cửa sổ cam kết. Tôi có thể dễ dàng mở tệp trong trình chỉnh sửa văn bản và thấy rằng đó là văn bản thuần túy.Tại sao TortoiseHg nghĩ Resource.h là nhị phân?
Tôi đã thấy một câu hỏi liên quan (Why does Mercurial think my SQL files are binary?) cho thấy nó có liên quan đến việc mã hóa tệp. Thật vậy, mở tệp trong Notepad ++ cho biết tệp nằm trong "UCS-2 Little Endian". Làm thế nào tôi có thể sửa lỗi này? Tôi, rõ ràng, không muốn phá vỡ một số kỳ vọng Visual Studio.
Như được mô tả trong chủ đề đó, từ trong Visual Studio tôi đã mở tệp resource.h và đi tới trình đơn Tệp-> Tùy chọn lưu nâng cao và chọn mã hóa "Unicode (UTF-8 có chữ ký) - Codepage 65001". Sau hai lần commit, bây giờ tôi có thể thấy một sự khác biệt thích hợp. – User
Chỉnh sửa, khi chọn "Unicode (UTF-8 có chữ ký) - Codepage 65001" sau khi chỉnh sửa trong trình chỉnh sửa tài nguyên Visual Studio than phiền về tệp không phải là tệp Visual Studio. Thay vào đó, tôi đã sử dụng "US-ASCII" (như được mô tả trong chuỗi được liên kết trong câu trả lời này). Có lẽ vấn đề là chữ ký UTF-8? Có một lựa chọn không có chữ ký, nhưng bây giờ tôi đang xem xét vấn đề được giải quyết. – User
Luôn thích tùy chọn không có chữ ký. BOM (chữ ký được đề cập) là một vấn đề phổ biến trong nhiều chương trình. Và thậm chí không có BOM, việc phát hiện sự khác biệt giữa UTF-8 và ISO-8859-1 là tương đối đơn giản khi nó chứa một ký tự nằm ngoài phạm vi ASCII, nó cũng không thực sự thêm giá trị. –