Преобразование кодировки UTF-8 в кодировку ISO 8859-1 с помощью NSString - PullRequest
7 голосов
/ 29 декабря 2010

У меня есть приложение, которое считывает данные в формате UTF-8 с сервера, но оно должно отображаться в ISO 8859-1 (Latin-1).Есть ли какие-либо API-интерфейсы Какао для этого?

Ответы [ 4 ]

13 голосов
/ 29 декабря 2010

Вы можете использовать метод NSString getCString:maxLength:encoding:, например:

char converted[([string length] + 1)];
[string getCString:converted maxLength:([string length] + 1) encoding: NSISOLatin1StringEncoding];

NSLog(@"%s", converted);

Получив это, вы можете повторно инициализировать экземпляр NSString из той же кодировки, используя класс stringWithCString:encoding::

NSString *converted_str = [NSString stringWithCString:converted encoding:NSISOLatin1StringEncoding];
0 голосов
/ 18 декабря 2015

Ответ Джейкобса на меня не сработал.В конечном итоге у меня получилось использовать только

[username stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]
0 голосов
/ 08 января 2014

Я предпочитаю использовать dataUsingEncoding:allowLossyConversion:, потому что он не требует от вас угадать, сколько памяти выделить, а возвращаемые NSData сообщают, сколько байт потребовалось.

0 голосов
/ 29 декабря 2010

использование

+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

Пример:

latinStringForDisplay = [NSString stringWithCString:yourCstringHere encoding:NSISOLatin1StringEncoding];

Это должно сделать это.

...