Я использую "строки Unicode" в Windows до тех пор, пока... Я узнал о Unicode (например, после окончания). Однако всегда меня удивляло, что Win32API очень сильно упоминает "unicode". В частности, вариант Unicode, упомянутый MSN, - UTF-16 (хотя терминология "широкая char" исходит из того, что она была UCS-2, которая не является Unicode). Однако он почти не упоминает о нормализации Unicode.
MSN имеет несколько страниц о Unicode и Unicode Normalization Forms и функции изменить форму нормализации. Страница нормализации даже говорит:
Win32 и .NET Framework поддерживают все четыре формы нормализации.
Однако я не нашел нигде в документах, какая форма нормализации используется (или понимается) с помощью Win32 API.
Вопрос 1: какая форма нормализации используется по умолчанию для ввода пользователя (например, элемент управления Edit) и преобразования через MultiByteToWideChar()
?
Вопрос 2: должны ли строки, переданные функциям Win32API, в определенной форме нормализации, или нормализация ядра и файловой системы - агностик?