Преобразование строки между различными кодировками в Objective-C - PullRequest
0 голосов
/ 14 октября 2011

Я новичок в Objective-C и какао. Но я разрабатываю простой почтовый клиент. И у меня есть некоторые проблемы с кодированием. Заголовки 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 голосов
/ 14 октября 2011

Вы можете использовать эти два метода 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
...