我们正在为iOS5开发一个简单的usenet阅读器,实现NNTP协议。
不幸的是我们在编码时遇到了一些问题:标题可能如下所示:
Subject: Re: [GA] =?ISO-8859-15?Q?Pr=FCfungsmodus?=
Date: 22 Apr 2012 22:50:38 +0200
在Objective-C中是否有一些简单的方法可以将包含=?ISO-8859-15?Q?Pr=FCfungsmodus?=
的NSString转换为“Prüfungsmodus
”?
由于
修改
嗯。我不确定我是否做对了: 你的意思是:
NSRange range = [input rangeOfString:@"=?"];
NSRange range2 = [input rangeOfString:@"?="];
NSString *string_to_decode = [input substringWithRange:NSMakeRange(range.location, range2.location-(range.location-2))];
NSData *data = [string_to_decode dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:YES];
NSString *converted = [[NSString alloc] initWithData:data encoding:(NSISOLatin1StringEncoding)];
因为那不起作用..
EDIT2 试图转换原始字节:
uint8_t buffer[1024];
iStream read:buffer maxLength:sizeof(buffer)
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSISOLatin1StringEncoding];
无论我在这里选择哪种编码,Subject:
字段总是看起来一样(日语等编码除外...)
答案 0 :(得分:0)
如果您是从第一原则开始自己做的,那就是大纲:
使用NSString
- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
串连
=?
关于MIME的详细信息,请查看维基百科。
[编辑:添加了关于MIME的说明。]