Как я могу декодировать utf8 NSstring на iphone? - PullRequest
0 голосов
/ 06 декабря 2009

У меня есть NSstring, которая закодирована с UTF8. Я хочу расшифровать его.

Я пробовал это, но это не работает:

NSString *decodedString = [NSString stringWithUTF8String:[encodedString cStringUsingEncoding:[NSString defaultCStringEncoding]]];

Как я могу это сделать?

Спасибо

1 Ответ

7 голосов
/ 06 декабря 2009

Отправка cStringUsingEncoding: в encodedString может работать, только если encodedString является объектом NSString. Наличие объекта NSString - это точка, к которой вы пытаетесь добраться. Более того, этот метод не декодирует строку, он кодирует строку, используя запрашиваемую кодировку; таким образом, в показанном вами коде вы запрашиваете (уже закодированную) строку для кодирования в некотором случайном кодировании (кодирование строки C по умолчанию), а затем пытаетесь декодировать результат как UTF-8. Это не сработает.

Вы не указываете, какой тип вы используете для encodedString. В любом случае вам нужно создать объект NSString, передав encodedString и его кодировку.

Все они, кроме initWithUTF8String:, требуют указания кодировки (initWithUTF8String: делает по определению), и все они, кроме initWithData:encoding:, выпускаются в удобной версии с автоматическим выпуском (+stringWith… вместо -initWith…).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...