2011-02-09 2 views
4

как это преобразование от NSWindowsCP1251StringEncoding до UTF-8? У меня было несколько попыток, но никто не работал так, как должен. Моя последняя попытка была:iPhone - конвертировать кодировку NSString из WindowsCP1251 в UTF8

NSData *dt = [mystr dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *str = [NSString alloc] initWithData:dt encoding:NSWindowsCP1251StringEncoding]; 

Результат str не читается. Кто-нибудь сталкивался с чем-то похожим?

+1

Как получить строку CP1251 в первую очередь? –

+0

В вашем примере кода вы сначала конвертируете 'mystr' из всего, что есть в UTF-8, затем вы создаете новую строку, но сообщаете' NSString', что это CP1251. Что должно быть CP1251? –

+0

@Bavarious: Строка поступает из сокета. – Bill

ответ

7

Я думаю, что вы были так близко:

// Convert it back to CP1251 
NSData *dt = [mystr dataUsingEncoding:NSWindowsCP1251StringEncoding]; 

// Now load it as UTF8 
NSString *str = [NSString alloc] initWithData:dt encoding:NSUTF8StringEncoding]; 
+0

Последнее неверно: кодировка должна быть кодировкой данных, поэтому NSWindowsCP1251StringEncoding. Вы должны добавить, что сам NSString не имеет кодировки (на практике). – gnasher729

Смежные вопросы