У нас тоже есть похожая проблема. К счастью, есть решение, хотя оно немного хитрое.
Если файл / каталог уже существует - вы можете использовать функцию GetShortPathName
. Результирующее «короткое» имя пути гарантированно не содержит нелатинских символов.
- Вызовите
GetShortPathNameW
(версия в юникоде), чтобы получить "короткую" строку пути.
- Преобразовать короткий путь в строку ANSI (используйте
WideCharToMultiByte
).
- Передайте полученную строку ANSI глупой сторонней библиотеке.
Теперь, если файл / каталог еще не существует - вы можете не получить его короткий путь. В таком случае вы должны сначала создать его.