FTP目录中的特殊字符

时间:2013-03-16 13:20:06

标签: ios xcode nsstring

我正在使用黑色浣熊类进行ftp会话。获取像这样的

的FTP目录的内容
arrayHelper.FTPFileName = [file objectForKey:(id)kCFFTPResourceName]

并写入nsmutablearray

我在ftp共享中有一些像这样的特殊字符的文件夹:

“Heino - Mit Freundlichen Gr \ U00b8ssen(豪华版)(2013) - 320”

如何转换字符串?

我尝试了以下内容:

NSString *uncodedName = [file objectForKey:(id)kCFFTPResourceName];
        NSLog(@"Uncoded Name is %@",uncodedName);
        arrayHelper.FTPFileName = [NSString stringWithCString:[uncodedName cStringUsingEncoding:NSUTF8StringEncoding]
                                                     encoding:NSNonLossyASCIIStringEncoding];
        NSLog(@"Coded Name is %@",arrayHelper.FTPFileName);

但返回nil ......

的NSLog:

[7344:c07]未编码的名字是Heino - MitFreundlichenGr¸ssen(豪华版)(2013) - 320 [7344:c07]编码名称为(null)

1 个答案:

答案 0 :(得分:1)

可以在CFFTPStream.c的源代码中看到 CFFTPStream以“Mac OS Roman”编码解释FTP服务器上的所有文件名。您的FTP服务器似乎使用Windows编码的文件名,因此在CFFTPStream错误地转换为Unicode。

但是你可以用

来扭转这个过程
NSString *uncodedName = [file objectForKey:(id)kCFFTPResourceName];
NSData *data = [uncodedName dataUsingEncoding:NSMacOSRomanStringEncoding];
arrayHelper.FTPFileName = [[NSString alloc] initWithData:data encoding:NSWindowsCP1252StringEncoding];
相关问题