С помощью этого кода я пытаюсь получить путь в const char * pathPtr из fsRefAEDesc.Он дает правильное имя и путь, если в имени файла, который есть в fsRefAEDesc, нет специальных символов.Теперь, если путь содержит некоторые специальные символы /Users/XYZ/.rtf, я не получаю правильный fsRef от AEGetDescData ().Я полагаю, что это как-то связано с кодировкой и пробовал некоторые из них, но может заставить ее работать.
FSRef fsRef;
//AEDesc fsRefAEDesc; //comes from some where.
status = AEGetDescData( &fsRefAEDesc, (void*)(&fsRef), sizeof(FSRef));
//OSErr result = FSMakeFSRefUnicode(&fsRef, 1024, (UniCharPtr)(&fsRef), kTextEncodingUnknown, &fileRef);
AEDisposeDesc( &fsRefAEDesc );
CFURLRef* gotURLRef = CFURLCreateFromFSRef(NULL, &fsRef);
CFStringRef macPath = CFURLCopyFileSystemPath(gotURLRef, kCFURLPOSIXPathStyle);
const char *pathPtr = CFStringGetCStringPtr(macPath, CFStringGetSystemEncoding());
Есть ли способ прочитать такие пути?