0

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

但返回零...

NS日志:

[7344:c07] 未编码名称为 Heino - Mit Freundlichen Gr¸ssen(豪华版)(2013 年)- 320 [7344:c07] 编码名称为(空)

4

1 回答 1

1

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

但是你可以用

NSString *uncodedName = [file objectForKey:(id)kCFFTPResourceName];
NSData *data = [uncodedName dataUsingEncoding:NSMacOSRomanStringEncoding];
arrayHelper.FTPFileName = [[NSString alloc] initWithData:data encoding:NSWindowsCP1252StringEncoding];
于 2013-03-16T14:46:55.043 回答