我使用此代码
与桑巴路的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