Разве Microsoft не использует ни UCS-2, ни UTF-16 для своих путей, и поэтому MAX_PATH имеет длину, которая отражает 16-битные единицы кода , даже не правильные символы?
Я знаю, что Apple использует UTF-16, и что каждый компонент в имени пути может содержать до 256 UTF-16 кодовых единиц , а не символов, и что он нормализовался к чему-то, приближающемуся к NFD в течение длительного времени тому назад.
Я подозреваю, что вам придется сначала при необходимости нормализовать, например, NFD для Apple, затем кодировать во внутренний формат вашей родной файловой системы, а затем проверить длину.
Когда вы делаете это сравнение, важно помнить, что Unix использует 8-битные кодовые единицы, Microsoft и Apple используют 16-битные кодовые блоки, и что никто, кажется, даже не удосуживается использовать абстрактные символы. Они могли бы сделать это, если бы использовали UTF-32, но никто не тратит так много места в файловой системе. Жаль, что.