nomes de arquivos Unicode no Windows vs. Mac OS X

1

Eu estava tentando usar alguns programas de sincronização de arquivos do Windows (Microsoft SyncToy, FreeFileSync) para sincronizar entre duas pastas: uma pasta local do Windows e uma pasta do OS X montada na máquina Windows usando o WebDAV. No entanto, a sincronização não funcionou muito bem: sempre que um nome de arquivo usava caracteres incomuns (acentos, letras chinesas ...), o programa não o detectava como o mesmo arquivo e tentava copiá-lo de duas maneiras: primeiro do Caixa do Windows para o OS X um, e depois o outro caminho. Basicamente, tratou as 2 cópias do arquivo como completamente diferentes.

Isso me fez pensar: quais são exatamente as variantes entre o Unicode usado para nomes de arquivos no OS X e no Windows? (Suponho que todos eles suportam Unicode agora). O que se pode fazer para evitar incompatibilidades deste tipo?

As duas máquinas estão usando o Windows 7 SP 1 e o OS X 10.9.5.

    
por PaulJ 11.11.2015 / 20:59

1 resposta

2

O Windows usa o UTF-16. A maioria dos codepoints é codificada em dois bytes. Codepoints fora do BMP (Basic Multilingual Plane) são codificados em um "par substituto" que leva quatro bytes. O Windows não normaliza nomes de arquivos usando qualquer formulário de normalização Unicode.

Isso significa que você pode ter dois nomes de arquivos idênticos a um usando um "é" composto por um único ponto de código e o outro usando um ASCII regular "e" seguido de um acento agudo Unicode, portanto dois pontos de código.

O OS X usa o UTF-8. Codepoints são codificados usando entre um e cinco bytes. O OS X usa o NFD Unicode (Normalization Form Canonical Decomposition).

Isso significa que quando um caractere Unicode como "é" é usado em um nome de arquivo, ele sempre será normalizado pelo sistema em um ASCII regular "e" seguido por um acento agudo combinando Unicode e sempre levará dois pontos de código.

Na verdade, o OS X usa a especificação do Unicode NFD da versão 2.1 ou 3.2 do Unicode, dependendo da versão do OS X.

Aqui está uma bela página que aborda as sutilezas na codificação de nome de arquivo do OS X's / HFS + .

    
por 21.03.2016 / 10:14