使用此代码我试图从fsRefAEDesc获取const char * pathPtr中的路径。如果fsRefAEDesc中的文件名中没有特殊字符,它会给出正确的名称和路径。现在,如果path有一些特殊字符/Users/XYZ/.rtf,我没有从AEGetDescData()中得到正确的fsRef。我相信它与Encoding有一些关系,并尝试了一些它们,但可以使它工作。无法读取FSRef中具有特殊字符的路径
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());
是否有任何方法可以读取这些路径?
感谢JWWalker,我没有看到正确的路径,当我尝试这个macPath.Also试图这为gotURLRef,但我得到了相同的我的控制台 即“/用户/ Manish /桌面/ \ u27a4 \ u00a9 \ u261a巴纽”。我相信我从AEGetDescData(&fsRefAEDesc,(void *)(&fsRef),sizeof(FSRef))获得的FSRef不是Unicode。有什么方法可以让我们获得正确的FSRef。除了FSMakeFSRefUnicode()?我没有任何其他方式将其转换为unicode,因为它不适合我。让我知道是否有任何方法可以这样做。 谢谢, M – Manish 2010-06-23 05:52:43
它可能是该URL包含正确的字符,但Unicode转义正在添加显示在日志中。 FSRef是一个文件引用,而不是文件名。 FSRef不是问题。 – JWWalker 2010-06-23 06:45:01