IOS开发FTP中文目录和文件名乱码解决办法
2012-10-14 21:49
2221 查看
在ios下需要实现一个ftp的客户端,发现中文的目录和文件名是乱码,google了很久,apple自己带的ftp示例里面有方法解决:
其实就是返回的编码是 NSMacOSRomanStringEncoding 需要转换为NSUTF8StringEncoding。奇怪吧是NSMacOSRomanStringEncoding。
- (NSDictionary *)entryByReencodingNameInEntry:(NSDictionary *)entry encoding:(NSStringEncoding)newEncoding // CFFTPCreateParsedResourceListing always interprets the file name as MacRoman, // which is clearly bogus <rdar://problem/7420589>. This code attempts to fix // that by converting the Unicode name back to MacRoman (to get the original bytes; // this works because there's a lossless round trip between MacRoman and Unicode) // and then reconverting those bytes to Unicode using the encoding provided. { NSDictionary * result; NSString * name; NSData * nameData; NSString * newName; newName = nil; // Try to get the name, convert it back to MacRoman, and then reconvert it // with the preferred encoding. name = [entry objectForKey:(id) kCFFTPResourceName]; if (name != nil) { assert([name isKindOfClass:[NSString class]]); nameData = [name dataUsingEncoding:NSMacOSRomanStringEncoding]; if (nameData != nil) { newName = [[NSString alloc] initWithData:nameData encoding:newEncoding]; } } NSLog(@"name is %@",name); NSLog(@"newname is %@",newName); // If the above failed, just return the entry unmodified. If it succeeded, // make a copy of the entry and replace the name with the new name that we // calculated. if (newName == nil) { assert(NO); // in the debug builds, if this fails, we should investigate why result = (NSDictionary *) entry; } else { NSMutableDictionary * newEntry; newEntry = [entry mutableCopy]; assert(newEntry != nil); [newEntry setObject:newName forKey:(id) kCFFTPResourceName]; result = newEntry; } return result; }
其实就是返回的编码是 NSMacOSRomanStringEncoding 需要转换为NSUTF8StringEncoding。奇怪吧是NSMacOSRomanStringEncoding。
相关文章推荐
- ServU7不支持中文名的解决办法(Serv-U中文目录和文件名变乱码问题)
- Java中FTPClient上传中文目录、中文文件名乱码问题解决方法
- FtpClient在创建中文目录文件名中的中文显示乱码解决方法
- 支持Xcode6 IOS使用ZBar二维码扫描开发(解决arm64,arm7s兼容并解决中文乱码问题)
- 【Java】解决FTPClient上传中文目录出现中文名乱码问题
- windows command ftp 中文文件名乱码解决方法
- windows command ftp 中文文件名乱码解决方法
- 使Serv-U支持中文目录名中文文件名并解决中文乱码
- 【JavaMail开发】使javamail-1.4.2 发送邮件时中文附件乱码或显示"??"的解决办法
- 使Serv-U支持中文目录名中文文件名并解决中文乱码
- 下载显示中文文件名 乱码 Firefox 的解决办法
- git中文文件名、目录名乱码应该怎么解决?(已解决)
- Ubuntu1系统中下载的中文文件名乱码解决办法
- 关于jFinal开发中遇到的中文乱码问题解决办法
- Struts2文件下载文件名中文出现乱码解决办法
- Serv-U下FTP客户端中文显示为乱码 解决办法【整理】
- vsftpd中文目录乱码的解决办法
- 20100722 使用FTP客户端(filezilla)中文目录显示乱码无法正常使用解决
- FTPClient上传 中文目录、中文文件名乱码问题
- 上传文件,经过Zuul,中文文件名乱码解决办法