我使用此代碼
與桑巴路的NSFileManager contentsOfDirectoryAtPath編碼的問題
urlStringOfVolumeToMount = [urlStringOfVolumeToMount stringByAddingPercentEscapesUsingEncoding:NSMacOSRomanStringEncoding];
NSURL *urlOfVolumeToMount = [NSURL URLWithString:urlStringOfVolumeToMount];
FSVolumeRefNum returnRefNum;
FSMountServerVolumeSync((CFURLRef)urlOfVolumeToMount, NULL, NULL, NULL, &returnRefNum, 0L);
然後安裝一個SMB路徑,我得到的一些路徑的內容:
NSMutableArray *content = (NSMutableArray *)[[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];
我的問題是在每一個路徑「內容「數組包含特殊字符(ü例如)給我2個字符編碼:ü成爲ü
當我記錄字節使用:
[contentItem dataUsingEncoding:NSUTF8StringEncoding];
它給了我:75cc88這是U(75)和¨(CC88)
我期待什麼是UTF-8編碼的字符ü。以字節爲單位,它應該是c3bc
我試圖轉換我的路徑使用ISOLatin1編碼,MacOSRoman ...但只要內容路徑已經有2個單獨的字符,而不是一個ü,任何轉換給我2字符編碼...
如果有人能幫助,謝謝
我的配置:定位於法國和使用雪豹。
感謝您的迴應。在urlStringOfVolumeToMount中使用MacRoman而不是utf-8沒有特別的理由。我會改變這一點。我從中得到的字符串被寫入另一個系統的文件中。該字符串是一個電影的路徑,如果字符被分解,它不會打開)。有一個有趣的帖子:http://discussions.info.apple.com/thread.jspa?threadID=2632226&start=15&tstart=0。我終於解決了我的問題,將UTF-8中的特殊字符從ü轉換爲%c3%bc,然後從此字符串獲取NSData,從而構建字節來處理此轉義字符 – niko34 2010-11-07 08:35:43