我正在使用黑色浣熊类进行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)
答案 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];