您的位置:首页 > 编程语言 > PHP开发

FTP目录乱码用GBK

2014-04-29 13:26 239 查看
NSStringEncoding gbkEncoding =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSDictionary * entryToAdd;
entryToAdd = [self entryByReencodingNameInEntry:( NSDictionary *) thisEntry encoding:gbkEncoding];

- (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];
}
}

// 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: