2012-01-17 5 views
7

Su Windows, i confronti tra file sono operazioni senza distinzione tra maiuscole e minuscole. Tuttavia, un sistema veramente insensibile alle maiuscole e minuscole sarebbe sensibile alle impostazioni locali e avrebbe dovuto trattare con tre casi, piuttosto che con due (almeno secondo Unicode). Per varie ragioni, mi piacerebbe replicare il modo in cui Windows fa questo al di fuori di Windows, se possibile.In che modo Windows fa nomi e percorsi di file senza distinzione tra maiuscole e minuscole?

Windows utilizza questo tipo di supporto locale o segue un modello più prevedibile (ad esempio, in qualche modo, come le impostazioni di OrdinalIgnoreCase di C#)?

risposta

2

Per quanto ne so NTFS supporta due modalità:

  1. POSIX namespace:
    Qualsiasi UTF-16 unità di codice (case sensitive) tranne U + 0000 (NUL) e/(barra).

  2. Win32 namespace:
    Qualunque UTF-16 unità di codice (case insensitive) tranne U + 0000 (NUL)/(barra) \ (barra rovesciata) e alcuni altri personaggi come :*" ecc

In modalità Win32 qualsiasi programma che utilizza Win32-API converte qualsiasi carattere di un nome di file in maiuscolo (se possibile) e usa quel nome internamente.

+0

Puoi fare riferimento? Non riesco a vedere da nessuna parte che tutto venga convertito in maiuscolo, in particolare dato che sarebbe completamente sbagliato in molte impostazioni locali ... –

+1

ho dovuto scavare in profondità nei miei segnalibri ... http: //blogs.msdn .com/b/michkap/archive/2005/01/16/353873.aspx – Mithrandir

+0

Bene, questa è la tabella di mappatura dei casi. Ciò non significa che tutto venga prima convertito in maiuscolo: P –