2012-01-17 31 views
7

Trên Windows, so sánh tệp là các hoạt động không phân biệt chữ hoa chữ thường. Tuy nhiên, một hệ thống không phân biệt chữ hoa chữ thường sẽ nhạy cảm với các thiết lập miền địa phương, và sẽ phải đối phó với ba trường hợp, thay vì hai (ít nhất, theo Unicode). Vì nhiều lý do, tôi muốn nhân rộng cách Windows thực hiện điều này bên ngoài Windows, nếu có thể.Windows làm cách nào để phân biệt tên tệp và đường dẫn không phân biệt chữ hoa chữ thường?

Windows có sử dụng loại hỗ trợ miền địa phương này hay không, nó có tuân theo một mẫu có thể đoán trước hơn (ví dụ như phần cài đặt OrdinalIgnoreCase của C#) không?

Trả lời

2

Theo như tôi biết NTFS hỗ trợ hai chế độ:

  1. POSIX namespace:
    Bất kỳ đơn vị mã UTF-16 (phân biệt chữ hoa) trừ U + 0000 (NUL) và/(slash).

  2. Win32 namespace:
    Bất kỳ UTF-16 đơn vị mã (case insensitive) trừ U + 0000 (NUL)/(slash) \ (backslash) và một số nhân vật khác như :*", vv

Trong chế độ Win32, bất kỳ chương trình nào sử dụng Win32-API sẽ chuyển đổi bất kỳ ký tự nào của tên tệp thành chữ hoa (nếu có thể) và sử dụng tên đó trong nội bộ.

+0

Bạn có thể tham khảo điều đó không? Tôi không thể nhìn thấy bất cứ nơi nào mà tất cả mọi thứ được chuyển đổi thành chữ hoa - đặc biệt là rằng đó sẽ là hoàn toàn sai trong nhiều miền địa phương .... –

+1

tôi đã phải đào sâu trong bookmark của tôi ... http: //blogs.msdn .com/b/michkap/archive/2005/01/16/353873.aspx – Mithrandir

+0

Vâng, đó là trường hợp bảng ánh xạ. Điều đó không có nghĩa là mọi thứ được chuyển thành chữ hoa đầu tiên: P –

Các vấn đề liên quan