Windows использует UTF-16. Большинство кодовых точек кодируются двумя байтами. Кодовые точки вне BMP (базовой многоязычной плоскости) кодируются в «суррогатную пару», которая занимает четыре байта. Windows не нормализует имена файлов, используя любую форму нормализации Unicode.
Это означает, что у вас может быть два имени файла, которые выглядят одинаково с одним, используя предварительно составленное «é», состоящее из одной кодовой точки, а другое - с помощью обычного ASCII «e», за которым следует Unicode, сочетающий острый акцент, то есть две кодовые точки.
OS X использует UTF-8. Кодовые точки кодируются с использованием от одного до пяти байтов. OS X использует Unicode NFD (форма нормализации канонического разложения).
Это означает, что когда в имени файла используется символ Unicode, такой как «é», он всегда будет нормализован системой в обычный ASCII «e», за которым следует Unicode, сочетающий острый акцент, и всегда будет принимать две кодовые точки.
Фактически OS X использует спецификацию Unicode NFD от Unicode версии 2.1 или 3.2, в зависимости от версии OS X.
Вот хорошая страница, которая охватывает тонкости в кодировке имени файла OS X's / HFS +.