Conjuntos de caracteres usados em nomes de arquivo

O NTFS armazena nomes de arquivo em Unicode. Por outro lado, os sistemas de arquivos FAT12, FAT16 e FAT32 mais antigos usam o conjunto de caracteres OEM. Para obter mais informações, consulte Páginas de Código.

Aplicativos não Unicode que criam arquivos FAT às vezes precisam usar as funções de conversão da biblioteca de runtime C padrão para traduzir entre o conjunto de caracteres da página de código do Windows e o conjunto de caracteres da página de código OEM. Com implementações Unicode das funções do sistema de arquivos, não é necessário executar essas traduções.

Seu aplicativo pode usar tipos de cadeia de caracteres genéricos, conforme descrito em Tipos de Dados do Windows para Cadeias de Caracteres. O aplicativo também pode usar protótipos de função genérica usando técnicas descritas em Convenções para Protótipos de Função. Para tipos de cadeia de caracteres genéricos ou protótipos de função genérica, seu aplicativo pode usar um único arquivo de origem para compilar uma versão Unicode ou não Unicode. Para permitir isso, o aplicativo fornece macros para funções que não são invocadas ao compilar para Unicode.

Nos sistemas de arquivos NTFS e FAT, os caracteres de nome de arquivo especial são: '\', '/', '.', '?' e '*'. Em páginas de código OEM, esses caracteres especiais estão no intervalo ASCII de caracteres (0x00 até 0x7F). Seus equivalentes Unicode são os mesmos valores em um formulário de 2 bytes, 0x0000 por meio de 0x007F.

Cuidado

A página de código do Windows e os conjuntos de caracteres de página de código OEM usados em sistemas operacionais em idioma japonês contêm o símbolo yen (}) em vez de uma barra invertida (\). Portanto, o símbolo Yen é um caractere proibido para sistemas de arquivos NTFS e FAT. Ao mapear Unicode para uma página de código em japonês, WideCharToMultiByte e outras funções de conversão mapeiam a barra invertida (U+005C) e o símbolo normal de Iene Unicode (U+00A5) para esse mesmo caractere. Por motivos de segurança, seus aplicativos normalmente não devem permitir o caractere U+00A5 em uma cadeia de caracteres Unicode que pode ser convertida para uso como um nome de arquivo FAT. Para obter mais informações, consulte Considerações de segurança: recursos internacionais.

 

Unicode na API do Windows

Considerações sobre segurança: recursos internacionais