使用此代碼我試圖從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