在Objective-C中的不同字符集之间转换字符串

时间:2011-10-14 08:10:25

标签: objective-c cocoa character-encoding nsstring iconv

我是Objective-C和Cocoa的新手。但我开发简单的邮件客户端。我有一些编码问题。 MIME标头可能如下所示:

From: =?UTF-8?B?eWVsbA==?= <example@mail.com>
Subject: =?UTF-8?B?0J/RgNC+0LLQtdGA0LrQsCDRgdCy0Y/Qt9C4?=

或者像这样:

Subject: =?KOI8-R?B?zc7F?=
From: user <example@mail.com>

或者像这样:

Subject: test subject
From: testname <example@mail.com>

如您所见,如果它不是ASCII字符串,则它具有以下格式:

=?{charset}?{B or Q}?{Base64 or Quoted-printable encoded string}?=

因此在base64解码后我们知道这个字符串的字符集。 例如,是否有PHP函数iconv()的模拟。或者如何在Objective-C中的不同字符集之间进行转换?

1 个答案:

答案 0 :(得分:0)

您可以使用这两个NSString方法

- (BOOL)getBytes:(void *)buffer maxLength:(NSUInteger)maxBufferCount usedLength:(NSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(NSRangePointer)leftover

- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding